• 締切済み

EXCEL VBAでのCSVファイルの編集

CSVファイル(ダブルクォーテーション)形式のファイルをEXCEL VBAにて行の編集(削除)をした後、上書き保存をしたらダブルクォーテーション区切りではなくカンマ区切りのCSVファイルの形式になってしまいます。 ダブルクォーテーション区切りのCSVファイルで上書き保存する記述があれば教えて下さい。おそらくEXCELでCSV形式の上書きはCSV2の形式で保存されるみたいです。 困っています。どなたかお助け下さい。

みんなの回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

Excelの機能にはないと思うので書いてみました。 質問の意図がCSV1かCSV3か不明のためCSV3を出力するようにしています。 『*****』の行をコメント行にするとCSV1で出力します。出力したい矩形範囲を選択して実行します。 ご参考に。 '今はCSV3、*****をコメント行にするとCSV1 Sub csv1or3Write()   Dim rw, rowStr, rowEnd As Long '行カウンタ   Dim col, colStr, colEnd As Integer '列カウンタ   With Selection '出力する選択範囲     rowStr = .Cells(1, 1).Row '開始行     rowEnd = .Cells(.Rows.Count, 1).Row '最終行     colStr = .Cells(1, 1).Column '開始列     colEnd = .Cells(1, .Columns.Count).Column '最終列   End With   Open "C:\--------\----\csvTest3.csv" For Output As #1 '出力ファイル名をセットする!!   For rw = rowStr To rowEnd     For col = colStr To colEnd - 1       If IsNumeric(Cells(rw, col)) Then '*****         Print #1, Cells(rw, col) & ","; '*****       Else '*****         Print #1, Chr(34) & Cells(rw, col) & Chr(34) & ",";       End If '*****     Next     If IsNumeric(Cells(rw, col)) Then '*****       Print #1, Cells(rw, col) '*****     Else '*****       Print #1, Chr(34) & Cells(rw, col) & Chr(34)     End If '*****   Next   Close End Sub

yossiy
質問者

お礼

有り難うございました。 お教え頂いた命令は私もインターネット上で調べてはいました。 実は、この件をお願いしたデータは、縦3万行、横40列という膨大なデータになっている為、お教え頂いた命令で記述した場合、編集作業に膨大な時間がかかってしまいます。 何がしたいかというと、EXCEL VBAでODBC経由でデータ検索(sqlのSELECT文)したいのですが、このダブルコォーテーションがなければ、データとして検索できないのです。 この様なデータを条件検索できるような命令がほかにあればご指導下さい。

関連するQ&A