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:=65001 | UTF-8のコードページ(65001)を指定 |
DataType | 区切り形式を指定(xlDelimited) |
Comma:=True | カンマ区切りとして読み込む |
参考:コードページ一覧(一部)
| コードページ | 対応文字コード |
|---|---|
| 932 | Shift-JIS(日本語) |
| 65001 | UTF-8 |
| 1200 | UTF-16 (Unicode) |
実行後のイメージ(正しく表示される)
| 商品名 | 価格 | 備考 |
|---|---|---|
| りんご | 100 | 青森県産 |
| バナナ | 80 | フィリピン産 |
注意点
Originの指定は非常に重要です。省略すると、ExcelがOSの既定コード(例:Shift-JIS)で開こうとし、文字化けの原因となります。- UTF-8のCSVは、Webアプリやシステムから出力されるファイルで一般的です。
Workbooks.OpenTextはテキストファイルだけでなく、CSVにも有効です。
応用ポイント
- セミコロン区切りやタブ区切りの場合は
Semicolon:=TrueやTab:=Trueを併用することができます。 - BOM(Byte Order Mark)付きのUTF-8でも、基本的にはこの方法で読み取り可能です。
まとめ
ExcelでUTF-8のCSVを扱う際は、文字コードを指定しないと文字化けが発生する可能性が高いです。
VBAで Origin:=65001 を明示的に指定することで、文字化けせずに正しくデータを取り込むことができます。
日本語を含むCSVファイルの取り扱いにお悩みの方は、ぜひ今回のVBAコードを活用してみてください。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
