プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/09/07 08:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!