• ベストアンサー

MS Accessでデータインポート前に置換処理をするには

OSは98、Access2000です。 あるオフィスコンピュータよりデータを、txt形式(カンマ区切り)でAccessにインポートしたいのですが、データの中に「"」が使用されていて、そのままインポートすると「解析不能の・・・」というエラーが出てしまいます。 そこで、Accessにデータをインポートする前に、置換処理をかけて「"」を違う文字に変換しそれからAccessにインポートするというような感じにしたいのですが、どなたかご教授いただけないでしょうか。 毎日インポートするデータですので、何かのボタンをクリックしたら実行されるような形で作りたいと思っております。 本当に少しならVBAが分かるようになってきましたので、アドバイス等よろしくお願い致します。

  • tokin
  • お礼率67% (38/56)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

再び登場します。 >ミドルウエアとは何でしょうか 失礼しました。お分かりでないとのことでしたので補足します。 オフコンからPCへあるいはその逆も、資源を共有する場合では、それぞれの異なるプラットホームから直接データーを扱うことができません。 その場合に中間的にツールを配置して、それぞれのプラットホームにあわせたデーター変換(コンバート)を実現するものです。起動とデーター獲得要求は、PC側からのコマンド発行となり、オフコンはデーターベースサーバーとして振舞われます。 最近のオフコンには、PCとの接続を可能にするツールがデフォルトで配置されている場合もありますが、大抵はオプション購入になっています。 また、オフコンだけに用意されていても、PCにもそのコマンドを発行する仕組みがいりますので、この部分を総称しています。 >RDBには対応していないと言われました。 データー作成側は、外部でしょうか? >1001","ABCDEF","1","○×株式会社","塩ビ管60””","エンビカン60""","50本","15000" のデーターですが、コピー&ペーストして私の環境でやりましたが、不完全なデータです。そのものズバリのデーターでしょうか?? 試しを一つ、Excelで表示できるのであればそのまま、名前を付けて保存で、CSVにしてみてください。このファイルをAccessでインポートしたらどうなりますか?

tokin
質問者

お礼

tadanokumaさん親切にありがとうございます。 >試しを一つ、Excelで表示できるのであればそのまま、名前を付けて保存で、 >CSVにしてみてください。このファイルをAccessでインポートしたらどうなります>か? この方法は前回一度試してみた方法で、そのときはだめでしたが、先程試しにもう一度やってみたところエラーが出なくなりました。 前回と状況が違っていたためかと思いますが、とりあえずエラーが出なくなったので、この方法を使わせていただこうと思います。 万一、使用している中でまた出るようでしたら質問させてください。 大変に勉強させていただきました。 また、長い時間ありがとうございました。

その他の回答 (4)

  • stork
  • ベストアンサー率34% (97/285)
回答No.4

msystemさんのやり方はダメなんですか? VBではなくアクセスのウィザードでできますよ。 オフコンから吐き出されるテキストファイルのテキスト区切り記号は、なくすか固定長に変えたほうが良いと思います。

tokin
質問者

補足

storkさんありがとうございます。 だめではないのですが、元データの「"」を違うものに一括変換しようとして、VBでプログラムを作ってみたりしたのですが、どうしてもうまく動かなかったため時間の関係であきらめてしまったのですf^^; さらに勉強をして再度挑戦しようとは思ってます。 テキストを固定長にかえるやり方ですが、Accessへのインポートの時に選択するところでよかったでしょうか? 一度やってみました、そのときはうまくいかなかったのですが、あれから状況が変わってますので再度やってみようと思います。 ありがとうございます。

回答No.3

再度登場します。 現状のファイルでわかりました。 原因は、オフコンから直接書き出す場合(DB連携でミドルウエアを介す。MS-DOSコンバーターがミドルウエアにある)に、ダブルクォーテンションが設定選択されていると思われます。(ODBCの場合) PCミドルウエアで定義されているのであれば、そのミドルウエアのソ説に定義はでています。ファイル書き出し形式は、CSV,SDF,SYLK,MSDOSがありますが、どれでしょうか? DB連携には、オフコンメーカーからいろんなツール(ミドルウエア)がありますので、メーカー毎でなんと言うツールなのか?推測ができませんので、違っているかもしれません。 今後、中間処理(”を取り除く)でVBやその他のコンバート作業を追加することより、ファイルを書き出す定義を修正した方が得策なのですが、オートメーション機能(サーバー機能の一つ)をご使用になりたいのであるなら、あなたの言われるVBの定義をAccessで作成することになります。 その定義についても、ミドルウエアのソ説に定義方法が載っていると思います。 いづれにしても、解決するにはPC側のミドルウエアの設定操作あるいは、オフコンのDB連携の操作ができますか?です。 判る限りの補足を希望します・・。

tokin
質問者

補足

ありがとうございます。 知識不足で申し訳ありませんが、ミドルウエアとは何でしょうか。 オフコンの方はほとんどわからないのですが、RDBには対応していないと言われました。 いただいた回答の半分も理解できていないと思いますが、定期を修正したほうがよいのかな、ということはわかりましたf^^; が、どうやればよいのかわかりません、多分これ以上難しくなると理解できなくなってしまいそうですが、ヒントなどいただけるとうれしいです。

  • msystem
  • ベストアンサー率42% (79/186)
回答No.2

インポートのウィザードに、テキスト区切り文字の指定がありますので、それを「"」以外にしてみてはどうでしょうか? もちろん元データの、テキスト区切り文字とあわせなければなりませんが・・・

tokin
質問者

補足

回答ありがとうございます。 また、返事が遅くなりすみません。 前に、テキスト区切り文字の指定を「"」から「'」にしてインポートしようと思ってVBでやりかけたのですが、VB自体よくわからず断念しました。 これができると一番早いのかもしれませんf^^;

回答No.1

1001,"ABCDEF",1,"○×株式会社",0,0,1 ↑こんな情報ですかね? また、そのファイル名の拡張子は"txt"なのでしょうか? >あるオフィスコンピュータよりデータ とあるのですが、他のRDBからミドルウエアを介してのPCデータ変換と思いますが、csv形式で出力が可能と思いますがどうでしょうか。? また、Accessでもcsvのインポートは出来ると思います。 確認ですが、現行のファイルにてテキストインポートウィザードの区切り記号付きと固定長があると思いますが、区切り記号付きにして次へ、カンマにチェックとテキスト区切り記号のところに[”]が入っていますか? いづれにしても、オフコンからの出力データの1レコードが分かれば詳細にわかると思います。

tokin
質問者

補足

アドバイスありがとうございます。 また、返事か遅くなりすみません。 補足いたします。 >確認ですが、現行のファイルにてテキストインポートウィザードの区切り記号付き>と固定長があると思いますが、区切り記号付きにして次へ、カンマにチェックとテ>キスト区切り記号のところに[”]が入っていますか? はい、これはやってみましたが、やはりエラーが出てしまいました。 データは 1001","ABCDEF","1","○×株式会社","塩ビ管60””","エンビカン60""","50本","15000"のような感じで、一応拡張子はcsvで落ちていて、エクセルで開くとちゃんと開きますが、Accessでインポートするとやはりエラーが出てしまいます。 説明が下手で申し訳ありませんが、よろしくお願いいたします。

関連するQ&A

  • ACCESSデータベースのインポート 

    ACCESSデータベースでインポートしたいデータ(拡張子がlog)があるのですが、そのままだと文字列が区切られていなくテーブルに入らないので、毎回 しょうがなく事前に置換ツール等を使ってカンマ区切りにしてからインポートしています。 モジュールなどを使って、インポートする前のデータをテーブルに入れやすい 形(カンマ区切りのtxtファイルぐらいしか思いつかないのですが。。。)に置換・変換っていうのはできるんでしょうか??教えて下さい。。

  • アクセスにデータをインポートする時に困っています、

    アクセス2003にデータをインポートするとき、 テキストファイル→エクセル→アクセスで行いたいのですが、 テキストファイルがコンマやタブで区切られていない為、 インポートした時、1つのセルに全ての値が入力されてしまいます。 テキストファイルをタブやコンマ区切りにする以外に、 アクセスにうまく取り込む方法はあるでしょうか。 教えてください!!

  • 拡張子のないファイルをACCESSにインポート

    ACCESS2003についての質問です。 データをインポートする際、拡張子の付いていないファイル(データの内容は区切り記号付きテキストファイルで表示することができます。)をACCESSにインポートする方法を教えて下さい。 .txt や .csv などの拡張子をつればACCESSでインポートできるファイルになるのですがその手間を省けないか?と言われています。 それ位してくれよと思うのですが・・・ VBAは少し勉強しているのですが、VBAを利用すればACCESS上でファイルに拡張子を付け加える事は可能になるのでしょうか?教えてください。

  • エクセルデータをテキストファイル(カンマ区切り)に変換しアクセスへインポートしたい。

    タブ区切りは出来るのですが、アクセスにインポートが出来ません。エラーが出てしまいます。(エラー内容はフィールド名が不正です。) カンマ区切りだと以前問題なくアクセスへインポートできたので、エクセルをカンマ区切り?のテキスト形式にしたいのですが・・。 "郵便番号" "住所" ・・・・・のような

  • Accessファイル選択インポート

    環境WinXP,MS-Access2003 Accessマクロを利用して インポートファイルを「ダイアログのファイルを指定」にて固定長のインポートをさせたいです。 実行形式はマクロボタン押下だけです。 VBAのサンプルがあればご教授お願いいたします。 なお インポートファイルは111.txt インポート定義はAAA インポート先テーブルはXXX

  • ACCESSにエクセルのデータをインポートする際、改行は?

    EXCELのデータを、ACCESSにインポートしようとして、 エラーが発生しました。 EXCELのデータの中に、改行している列があるので、 そのためかと思われるのですが…。予想は当たっておりますでしょうか? また、その為にインポートできないとすると、そのデータは、 (1)列を複数つくって、それぞれに入力する (2)一つのセルに、コンマなどで区切って入力する のどちらかになるかと思うんですが、 (2)の場合、例えば、コンマで区切った箇所を ACCESSのフォームで改行して表示するような方法はあるのでしょうか? 初心者ですので、VBAというのはあまりよく分かりません。 どなたか教えていただけると嬉しいです。

  • MS AccessでExcelファイルのインポートは?

    AccessのVBAでExcelファイルをインポートするにはどうすればいいのでしょうか? ちなみに DoCmd.TransferText acImportDelim, , "Tmp名簿", strInPutPath & "\名簿.csv", True (strInPutPathは、ダイアログから取得したパスです) では、CSVファイル(TXTファイル)しか読み込めません。 (もちろん、そのため拡張子が「.csv」にしていますが 読み込むファイルをテキストファイルにしたら「.txt」でもいいです) 「ファイル」メニュー(コマンド)の「外部データの取り込み」→「インポート」では、Excelファイルも読み込めるので悔しいです。 これをVBAでやりたいんですが。 よろしくお願いいたします。

  • アクセス2010のインポートについて

    調べてみてもわからなかったので教えてください。アクセス初心者です。 アクセスでデータベースを作成しようと試みています。 あるエクセルデータをアクセスでテーブルとして使用したく、インポートしました。 なにやら、思惑とは違い、一部のデータが、エクセルの所定の列とはフィールドがずれていて、 エクセルデータを確認したところ、一つのセルの中に、半角カンマが入っていました。 どうやらこのことが原因みたいなのですが、最初は半角カンマを他の文字に変えようかとも検討したのですが、半角カンマが入った状態でインポートした方がいいという結論に達しました。 どうしたら上記のデータを半角カンマをとらずにフィールドがずれることなくアクセスへインポートできるでしょうか

  • Access2000形式でのインポートについて

    Access2000形式でタブ区切りのテキストデータをテーブルにインポートすると、 インポート後のテーブルの内容がテキストデータと違う順番になってしまいます。 何回やってもこの現象なので困っています。 何かわかる方、お願いします。

  • アクセスへのデータインポートが上手くいきません。。。

     アクセスへのデータインポートで知恵をおかし下さい! <現象>エクセルからアクセスへデータインポートをしようとしたところ、エクセルで【01】のものがインポートすると【1】になってしまいます。 エクセル上での【01】の表示形式は、分類:ユーザー定義、種類:00、になっております。 文字列に変えようとすると、してみましたが、【1】になってしまいます。。。。  どのように、したら、【01】としてインポートできるのでしょうか。教えて下さい。