読者です 読者をやめる 読者になる 読者になる

小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


今さらながらCSVを出力するExcelマクロ作ってみた。

Office-Excel
はじめに

ExcelでCSVファイルを出力するのは面倒です。
まず、ファイルの保存形式を変えないといけない。加えて警告ダイアログや確認ダイアログが何度も表示されるので、うっとうしい。

そこでCSVファイルを出力するExcelマクロを作ってみました。ネット上にあるいくつかの記事を読んでみましたが、以下の記事がコードの行数も少なくて参考になりました。

Excel VBAでCSVファイルを作成してみる - NAVER まとめExcel VBAでCSVファイルを作成してみる - NAVER まとめ

前提条件
  • A1セルには値が入っていること
  • A列に値が入っているところまでを出力します。(A列の空白セルが最終行となります)
CSVファイルを出力Excelマクロ
Sub CSV出力()
    Dim csvFilePath As String
    Dim iCount As Long
    Dim jCount As Long
    Dim kCount As Long
    Dim maxRow As Long
    Dim maxCol As Long
    Dim fileNo As Integer
    Dim FileName As String
    
    ' ファイル名の取得(拡張子を除く)
    FileName = Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".", -1, vbTextCompare) - 1)
    ' CSVファイルパスの作成
    csvFilePath = ActiveWorkbook.Path & "\" & FileName & ".csv"
    ' 最終行
    maxRow = ActiveSheet.Range("A1").End(xlDown).Row
    ' 最終列
    maxCol = ActiveSheet.Range("A1").End(xlToRight).Column
    ' ファイル番号
    fileNo = FreeFile

    ' ファイル開く
    Open csvFilePath For Output As #fileNo

    ' 縦方向ループ(最終行まで)
    For iCount = 1 To maxRow
        ' 横方向ループ(最終列-1まで)
        For jCount = 1 To maxCol - 1
            ' ファイル出力(改行なし)
            Write #fileNo, Cells(iCount, jCount);

            ' ループカウンタをコピー
            kCount = jCount
        Next jCount
        ' 最終列をファイル出力(改行付き)
        Write #fileNo, Cells(iCount, kCount + 1)
    Next iCount

    ' ファイルを閉じる
    Close #fileNo
'
End Sub
使い方

1.Excelを起動し、開発メニューから「マクロの記録」をクリックします。
f:id:replication:20140315224306p:plain
2.マクロ名に「CSV出力」と入力し、「OK」ボタンをクリックします。
f:id:replication:20140315224614p:plain
3.「記録終了」をクリックして、マクロの記録を停止します。
f:id:replication:20140315224357p:plain
4.「マクロ」ボタンをクリックします。
f:id:replication:20140315224735p:plain
5.「編集」ボタンをクリックします。
f:id:replication:20140315224756p:plain
6.VBAのエディタが起動したら、ソースコードを貼り付けて、保存します。
f:id:replication:20140315225135p:plain
一度保存したら、マクロボタンから何度も実行することができます。

実行結果

f:id:replication:20150805012816p:plainf:id:replication:20150805012818p:plain

関連記事