Excel VBAで文字コード(UTF-8など)を指定してCSVファイルを正しく読み込む方法

ExcelでCSVファイルを開いたとき、文字化けが発生した経験はありませんか?
特にUTF-8形式で保存されたCSVを日本語環境のExcelで直接開くと、全角文字や記号が文字化けすることがあります。

本記事では、Excel VBAを使って文字コード(エンコーディング)を指定し、テキストファイルを正しく読み込む方法をご紹介いたします。


目次

読み込み対象:UTF-8形式のCSVファイル

例えば、次のようなCSVファイル(例:product_utf8.csv)を想定します:

商品名,価格,備考
りんご,100,青森県産
バナナ,80,フィリピン産

これを日本語環境のExcelで直接開くと、文字が「??」や「æ」のように化けて表示されることがあります。
その原因はExcelが正しい文字コード(UTF-8)で開いていないためです。


VBAコード:UTF-8でCSVを読み込む

Sub ImportCSVwithUTF8()
    Dim csvPath As String
    csvPath = ThisWorkbook.Path & "\product_utf8.csv"
    
    Workbooks.OpenText _
        Filename:=csvPath, _
        Origin:=65001, _ ' UTF-8 (コードページ)
        DataType:=xlDelimited, _
        Comma:=True
End Sub

各引数の解説

パラメータ説明
Filename読み込むCSVファイルのパス
Origin:=65001UTF-8のコードページ(65001)を指定
DataType区切り形式を指定(xlDelimited
Comma:=Trueカンマ区切りとして読み込む

参考:コードページ一覧(一部)

コードページ対応文字コード
932Shift-JIS(日本語)
65001UTF-8
1200UTF-16 (Unicode)

実行後のイメージ(正しく表示される)

商品名価格備考
りんご100青森県産
バナナ80フィリピン産

注意点

  • Origin の指定は非常に重要です。省略すると、ExcelがOSの既定コード(例:Shift-JIS)で開こうとし、文字化けの原因となります。
  • UTF-8のCSVは、Webアプリやシステムから出力されるファイルで一般的です。
  • Workbooks.OpenText はテキストファイルだけでなく、CSVにも有効です。

応用ポイント

  • セミコロン区切りやタブ区切りの場合は Semicolon:=TrueTab:=True を併用することができます。
  • BOM(Byte Order Mark)付きのUTF-8でも、基本的にはこの方法で読み取り可能です。

まとめ

ExcelでUTF-8のCSVを扱う際は、文字コードを指定しないと文字化けが発生する可能性が高いです。
VBAで Origin:=65001 を明示的に指定することで、文字化けせずに正しくデータを取り込むことができます。

日本語を含むCSVファイルの取り扱いにお悩みの方は、ぜひ今回のVBAコードを活用してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次