Excel VBAで独自形式のCSVファイルを作成

概要

  • ExcelはRFC4180に準拠したCSV出力が可能ですが、逆にRFC4180に準拠しない独自形式のCSV出力はできません。
    そのため、ここではExcel VBAを使って独自のCSVファイルを出力するサンプルを紹介します。
  • サンプルの内容を少々変更すれば、タブ区切りファイル(TSV)やSQLインサート文の作成等にも対応できます。このように応用する前提のサンプルであるため、可能な限りシンプルにしています。
  • 動作確認した環境は次の通りです。
    OSWindows 10(64ビット)
    OfficeMicrosoft Office Professional Plus 2019
    (Microsoft® Excel® 2019 MSO (16.0.14228.20216) 32 ビット )

サンプルの紹介

※ここで説明する仕様はサンプル用であり、VBAコードを修正すれば簡単に変更できます。

  • シートに定義した行・列データをCSV形式でファイル(UTF-8)に出力します。(1シート1ファイル)
  • 先頭のサマリシートにある「一括ファイル出力」ボタンを押すことで、各シートからのファイル出力を一括で行えます。
    (先頭が数字3桁で始まるシートが対象となります。)
  • 各シートの「ファイル出力」ボタンを押すことで、シート個別にファイル出力を行えます。
  • ファイルの出力先は、Excelファイルがあるフォルダ直下のoutputフォルダです。
    ファイル名は「シート名+”.csv”」としています。
  • サンプルでは、カンマ、ダブルクォーテーション、改行等の特殊な文字が含まれていても、そのままファイルに出力しています。要件に応じた内容を出力できるようサンプルを修正してください。

サンプルコード

  • このサンプルでは、UTF8形式でファイル保存するためにADO関連ライブラリを使用しています。
    参照設定で「”Microsoft ActiveX Data Objects X.X Library”」を追加してください。
  • データの読み取りを開始する行・列位置、出力フォルダ等を変更したい場合は「★」印を参考にしてください。
  • サンプルの完全なコード(Excelのxlsmファイル)は、こちらからダウンロードできます。