- 締切済み
EXCEL VBAでのCSVファイルの編集
CSVファイル(ダブルクォーテーション)形式のファイルをEXCEL VBAにて行の編集(削除)をした後、上書き保存をしたらダブルクォーテーション区切りではなくカンマ区切りのCSVファイルの形式になってしまいます。 ダブルクォーテーション区切りのCSVファイルで上書き保存する記述があれば教えて下さい。おそらくEXCELでCSV形式の上書きはCSV2の形式で保存されるみたいです。 困っています。どなたかお助け下さい。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- nishi6
- ベストアンサー率67% (869/1280)
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
お礼
有り難うございました。 お教え頂いた命令は私もインターネット上で調べてはいました。 実は、この件をお願いしたデータは、縦3万行、横40列という膨大なデータになっている為、お教え頂いた命令で記述した場合、編集作業に膨大な時間がかかってしまいます。 何がしたいかというと、EXCEL VBAでODBC経由でデータ検索(sqlのSELECT文)したいのですが、このダブルコォーテーションがなければ、データとして検索できないのです。 この様なデータを条件検索できるような命令がほかにあればご指導下さい。