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コードを活用してみてください。