ExcelVBA シートをCSVとして出力する

コンピューター

シートをCSVとして出力する

サンプルデータ

サンプルデータとしてLOTO7の過去当せんデータを使用しました。

「名前を付けて保存」を使ってCSV出力する

メニューから「ファイル」「名前を付けて保存」を選択し、拡張子にCSVを選択する事でCSVファイルが作成できます。

今回のデータでは、カンマ編集しているセルがあり、カンマを含むデータの場合、ダブルクォーテーションで囲んだデータを出力しています。この判断はデータ毎に行われている為、同じ項目でもカンマを含む場合、ダブルクォーテーションで囲んだデータを出力し、カンマを含まない場合、囲み文字は無く、そのまま出力されます。

上記データでは、6等金額の1行目は、900でカンマ無し、2行目は、1,200でカンマ有りです。作成されたCSVファイルをメモ帳で開いてみると900はそのまま、1,200はダブルクォーテーションで囲まれている事が確認できます。

VBAをを使ってCSV出力する

囲んだり、囲まなかったりするのが気持ち悪いので、全てダブルクォーテーションで囲んだデータを出力するVBAを作成してみました。

CSV出力するVBA仕様
  • 出力先は、対象となるエクセルブックと同じフォルダとする
  • ファイル名は、対象となる ブック名-シート名.csvとする
  • 常に上書き保存する(上書き確認は行わない)
  • 汎用性を持たせる為、行数、列数はVBAで取得する
標準モジュールにVBAを作成する

標準モジュールに作成し、エクスポートし、ファイル化しておく事で必要な時だけ、インポートして使用する事ができる。

Option Explicit

'全データダブルクォーテーション囲みでcsvファイルに書き出す

Public Sub sheet2csv()
Dim strFile As String
Dim strCsvFile As String
Dim lngRow As Long
Dim lngCol As Long
Dim intExt As Integer
Dim intFno As Integer
Dim strBuff As String
Dim i As Long
Dim j As Long
        
    '対象ブックのパスを含むファイル名を取得する
    '取得したファイル名から拡張子部分を取り除く
    'ハイフンとシート名を付加し、拡張子の.csvを付加する
    strFile = ActiveWorkbook.FullName
    intExt = InStrRev(strFile, ".")
    If (0 < intExt) Then strFile = Left(strFile, intExt - 1)
    strFile = strFile & "-" & Trim(ActiveSheet.Name) & ".csv"

    'データ終端セルを取得
    lngRow = Cells(Rows.Count, 1).End(xlUp).Row
    lngCol = Cells(1, Columns.Count).End(xlToLeft).Column

    '書出し確認
    If MsgBox(strFile, vbYesNo + vbQuestion) = vbYes Then

        intFno = FreeFile()
        Open strFile For Output As #intFno
            
        For i = 1 To lngRow
            strBuff = ""
            For j = 1 To lngCol
                'ダブルクォーテーションChr(34)とカンマChr(44)を付加
                strBuff = strBuff & Chr(34) & Cells(i, j).Text & Chr(34) & Chr(44)
            Next j
            strBuff = Left(strBuff, Len(strBuff) - 1) '最後についている不要なカンマChr(44)を除去
            Print #intFno, strBuff
            DoEvents
        Next i
            
        Close #intFno
        MsgBox "終了しました", vbOKOnly + vbInformation
    End If
End Sub
VBAの実行

マクロの表示を開いて作成したマクロを実行します。

作成されたCSVファイルをメモ帳で開いてみると全てダブルクォーテーションで囲まれている事が確認できました。

コメント

タイトルとURLをコピーしました