- ベストアンサー
EXCEL VBAでのCSVファイル読み込み、出力で困っています
- EXCEL VBAでのCSVファイル読み込み、出力で困っています。データ約38,000件のファイルから3件抽出すると文字化けする項目があるのです。また、抽出データをCSVで出力しているのですが始まりと終わりに " が出力されるので困っています。
- VBA初心者がEXCEL VBAでCSVファイルの読み込みと出力で困っています。データ約38,000件のファイルから3件抽出すると文字化けする項目があります。さらに、出力時に"が付いてしまうので困っています。解決策を教えてください。
- EXCEL VBAでCSVファイルの読み込みと出力について困っています。大量のデータを読み込むと文字化けする項目があるようです。また、出力時に"が含まれるので修正したいです。COBOL経験者ですが、VBAの初心者です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
フィールドの型が自動判定されるため、 テキスト型で256文字以上が切り捨てられているのでしょう。 http://okwave.jp/qa/q5996792.html >..schema.iniファイルを作成して対処したほうが良いかと思います。 >256文字以上の文字列を含む列をMemo型で指定します。 >始まりと終わりに " が出力されるので困っています。 [Write#ステートメント]を使ってるからでしょう。 ヘルプで確認してみてください。 >..文字列は、ダブル クォーテーション ("") で囲んで出力します。 提示内容であれば、[Print#ステートメント]で良さそうですが。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
同じコードとは言えませんが、こちらで試してみましたが、おそらく根本的な違いはありませんから、問題ないはずです。 CSVの項目の中のひとつに、550文字を入れてみましたが、特に、文字化け等は発生しませんが、フィールドのデフォルトは255になっていますね。 rs(field).DefinedSize それを一旦、SQL で読んで、rs に入れてみましたが広がります。 出力の test.csv 側で、文字化けしているということですか? 一般的な話なのですが、CSV が、いわゆる本物のCSVでなく、途中で、見えない区切り信号が入っている可能性があります。私は、どうも、見かけ上のCSV の気がしてならないのですが。 それと、もしダメなら、スピードは、遅いかもしれませんが、 Open "C:\Documents and Settings\デスクトップ\test\test.csv" For Output As #1 で出力しているなら、インポート側も Open ステートメントを使用したらいかがでしょうか。 一旦、配列(Split textline, ",") に入れて、そこで、検索してヒットさせる方法もあります。ただし、本物のテキストファイルでないと、以下はうまく行かないはずです。 Open "C:\Documents and Settings\デスクトップ\test\sample1.csv" For Input As #1 例えば、Binary Access を利用します。 FileName ="C:\Documents and Settings\デスクトップ\test\sample1.csv" Open FileName For Binary Access Read As #1 >また、抽出データをCSVで出力しているのですが >始まりと終わりに " が出力されるので困っています。 >" が出力されないようにできるのでしょうか 例: buf = Mid(adoRS("長文1"),2, Len(adoRS("長文1")-2)
お礼
お忙しい中、回答ありがとうございます。 おかげさまで、文字化けはiniファイルを作ることで解決しました。 出力内容もPrint #1 で思った通りの出力ができました。 VBAの勉強中ですので、また質問させていただくことがあると思います。 どうぞ、よろしくお願いします。
- mimeu
- ベストアンサー率49% (39/79)
(1) Excel のバージョンは何ですか? (2) CSV への出力をVBAのWrite文でなさっていますが、 Workbook.SaveAs メソッドで FileFormat:=xlCSV としても イケルはずですが、試されましたか? " で囲む件はこれで解決するかもしれません。 (3) 読み出した情報を全部ひとつの文字列変数に格納してから出力されていますが 1レコード毎に出力していってはマズイ理由はありますか? 文字化けの理由はこれかもしれません。お試し下さい。 (4) 余談ですが、どうしてもVBAでファイル出力するなら Print #1 文の方が扱いやすいかもしれません。
お礼
(1)記載を忘れていました。すみません。 2003 SP3です。 (2)出力方法がいろいろあることは知っていたのですが、 write の方が馴染み深かったので使用しました。出力できれば何でもOKです。 (3)これは試しました。変わらず文字化けしてました。 (4)Print #1 で思った通りの出力ができました! ありがとうございます!! 文字化けの件はiniファイルを作ることで解決しました。回答ありがとうございました。 VBAの勉強中ですので、また質問させていただくことがあると思います。 どうぞ、よろしくお願いします。
お礼
http://oshiete.goo.ne.jp/qa/5996792.html あっ、このページ、何度か見ました! end-uさんが回答されてたんですね。 iniファイルって初心者には何だか難しそうだなぁ と思ってよく読んでいませんでした。 ここに質問した後いろいろ調べた結果、勇気をもって iniファイルを作ってみたら非常に簡単でした! しかし、参考サイトにはChar型についてしか書かれていなくて。 Memo型だったんですね!おかげで解決できました! ありがとうございます!! 出力内容もPrint #1 で思った通りの出力ができました! VBAの勉強中ですので、また質問させていただくことがあると思います。 どうぞ、よろしくお願いします。