- ベストアンサー
MS Accessでデータインポート前に置換処理をするには
OSは98、Access2000です。 あるオフィスコンピュータよりデータを、txt形式(カンマ区切り)でAccessにインポートしたいのですが、データの中に「"」が使用されていて、そのままインポートすると「解析不能の・・・」というエラーが出てしまいます。 そこで、Accessにデータをインポートする前に、置換処理をかけて「"」を違う文字に変換しそれからAccessにインポートするというような感じにしたいのですが、どなたかご教授いただけないでしょうか。 毎日インポートするデータですので、何かのボタンをクリックしたら実行されるような形で作りたいと思っております。 本当に少しならVBAが分かるようになってきましたので、アドバイス等よろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
再び登場します。 >ミドルウエアとは何でしょうか 失礼しました。お分かりでないとのことでしたので補足します。 オフコンからPCへあるいはその逆も、資源を共有する場合では、それぞれの異なるプラットホームから直接データーを扱うことができません。 その場合に中間的にツールを配置して、それぞれのプラットホームにあわせたデーター変換(コンバート)を実現するものです。起動とデーター獲得要求は、PC側からのコマンド発行となり、オフコンはデーターベースサーバーとして振舞われます。 最近のオフコンには、PCとの接続を可能にするツールがデフォルトで配置されている場合もありますが、大抵はオプション購入になっています。 また、オフコンだけに用意されていても、PCにもそのコマンドを発行する仕組みがいりますので、この部分を総称しています。 >RDBには対応していないと言われました。 データー作成側は、外部でしょうか? >1001","ABCDEF","1","○×株式会社","塩ビ管60””","エンビカン60""","50本","15000" のデーターですが、コピー&ペーストして私の環境でやりましたが、不完全なデータです。そのものズバリのデーターでしょうか?? 試しを一つ、Excelで表示できるのであればそのまま、名前を付けて保存で、CSVにしてみてください。このファイルをAccessでインポートしたらどうなりますか?
その他の回答 (4)
- stork
- ベストアンサー率34% (97/285)
msystemさんのやり方はダメなんですか? VBではなくアクセスのウィザードでできますよ。 オフコンから吐き出されるテキストファイルのテキスト区切り記号は、なくすか固定長に変えたほうが良いと思います。
補足
storkさんありがとうございます。 だめではないのですが、元データの「"」を違うものに一括変換しようとして、VBでプログラムを作ってみたりしたのですが、どうしてもうまく動かなかったため時間の関係であきらめてしまったのですf^^; さらに勉強をして再度挑戦しようとは思ってます。 テキストを固定長にかえるやり方ですが、Accessへのインポートの時に選択するところでよかったでしょうか? 一度やってみました、そのときはうまくいかなかったのですが、あれから状況が変わってますので再度やってみようと思います。 ありがとうございます。
- tadanokuma
- ベストアンサー率36% (128/348)
再度登場します。 現状のファイルでわかりました。 原因は、オフコンから直接書き出す場合(DB連携でミドルウエアを介す。MS-DOSコンバーターがミドルウエアにある)に、ダブルクォーテンションが設定選択されていると思われます。(ODBCの場合) PCミドルウエアで定義されているのであれば、そのミドルウエアのソ説に定義はでています。ファイル書き出し形式は、CSV,SDF,SYLK,MSDOSがありますが、どれでしょうか? DB連携には、オフコンメーカーからいろんなツール(ミドルウエア)がありますので、メーカー毎でなんと言うツールなのか?推測ができませんので、違っているかもしれません。 今後、中間処理(”を取り除く)でVBやその他のコンバート作業を追加することより、ファイルを書き出す定義を修正した方が得策なのですが、オートメーション機能(サーバー機能の一つ)をご使用になりたいのであるなら、あなたの言われるVBの定義をAccessで作成することになります。 その定義についても、ミドルウエアのソ説に定義方法が載っていると思います。 いづれにしても、解決するにはPC側のミドルウエアの設定操作あるいは、オフコンのDB連携の操作ができますか?です。 判る限りの補足を希望します・・。
補足
ありがとうございます。 知識不足で申し訳ありませんが、ミドルウエアとは何でしょうか。 オフコンの方はほとんどわからないのですが、RDBには対応していないと言われました。 いただいた回答の半分も理解できていないと思いますが、定期を修正したほうがよいのかな、ということはわかりましたf^^; が、どうやればよいのかわかりません、多分これ以上難しくなると理解できなくなってしまいそうですが、ヒントなどいただけるとうれしいです。
- msystem
- ベストアンサー率42% (79/186)
インポートのウィザードに、テキスト区切り文字の指定がありますので、それを「"」以外にしてみてはどうでしょうか? もちろん元データの、テキスト区切り文字とあわせなければなりませんが・・・
補足
回答ありがとうございます。 また、返事が遅くなりすみません。 前に、テキスト区切り文字の指定を「"」から「'」にしてインポートしようと思ってVBでやりかけたのですが、VB自体よくわからず断念しました。 これができると一番早いのかもしれませんf^^;
- tadanokuma
- ベストアンサー率36% (128/348)
1001,"ABCDEF",1,"○×株式会社",0,0,1 ↑こんな情報ですかね? また、そのファイル名の拡張子は"txt"なのでしょうか? >あるオフィスコンピュータよりデータ とあるのですが、他のRDBからミドルウエアを介してのPCデータ変換と思いますが、csv形式で出力が可能と思いますがどうでしょうか。? また、Accessでもcsvのインポートは出来ると思います。 確認ですが、現行のファイルにてテキストインポートウィザードの区切り記号付きと固定長があると思いますが、区切り記号付きにして次へ、カンマにチェックとテキスト区切り記号のところに[”]が入っていますか? いづれにしても、オフコンからの出力データの1レコードが分かれば詳細にわかると思います。
補足
アドバイスありがとうございます。 また、返事か遅くなりすみません。 補足いたします。 >確認ですが、現行のファイルにてテキストインポートウィザードの区切り記号付き>と固定長があると思いますが、区切り記号付きにして次へ、カンマにチェックとテ>キスト区切り記号のところに[”]が入っていますか? はい、これはやってみましたが、やはりエラーが出てしまいました。 データは 1001","ABCDEF","1","○×株式会社","塩ビ管60””","エンビカン60""","50本","15000"のような感じで、一応拡張子はcsvで落ちていて、エクセルで開くとちゃんと開きますが、Accessでインポートするとやはりエラーが出てしまいます。 説明が下手で申し訳ありませんが、よろしくお願いいたします。
お礼
tadanokumaさん親切にありがとうございます。 >試しを一つ、Excelで表示できるのであればそのまま、名前を付けて保存で、 >CSVにしてみてください。このファイルをAccessでインポートしたらどうなります>か? この方法は前回一度試してみた方法で、そのときはだめでしたが、先程試しにもう一度やってみたところエラーが出なくなりました。 前回と状況が違っていたためかと思いますが、とりあえずエラーが出なくなったので、この方法を使わせていただこうと思います。 万一、使用している中でまた出るようでしたら質問させてください。 大変に勉強させていただきました。 また、長い時間ありがとうございました。