VBA実行時にCSVファイルを読み込んだ時に文字化けすることがありますが、その原因の多くは文字コードの違いによるものになります。
今回は、取り扱うCSVファイルの形式を「UTF-8(BOM付き)」形式へ変更する方法を掲載します。
本来はBOM付きでは無い方が望ましいのですが、Excel VBA内での編集に限定した場合では特に問題ないので、Excel外部とのやり取りが生じる場合は他のプログラミング言語で実装するのが現実的かと。
下記掲載のコードは”Excel2016″で追加されている「XlFileFormat = xlCSVUTF8」を使用していますので、Excel2016以前のExcelを使用している場合はマクロ実行時にエラーが発生してしまいます。
Sub CSVファイルをUTF8へ変換()
Dim csvFilePath As String
Dim csvWorkbook As Workbook
' 変換するCSVファイルのパスを指定
csvFilePath = "C:\test\csv\test(UTF-8変換前).csv"
' CSVファイルを開く
Set csvWorkbook = Workbooks.Open(csvFilePath)
' UTF-8(BOM付き)形式でCSVファイルを保存
csvWorkbook.SaveAs "C:\test\csv\test(UTF-8変換後).csv", xlCSVUTF8
' CSVファイルを閉じる(変更を保存せずに閉じる)
csvWorkbook.Close SaveChanges:=False
End Sub
上記のコードを実行するとUTF-8に変換されたCSVファイルが新たに作成されます。
ExcelにCSVファイルを読み込む前に上記コードを組み込んで使用することでCSVファイル読み込み時の文字化けは発生しなくなります。
コメント