ExcelでCSVファイルをマクロを使って取り込む際に、特にUTF-8形式で文字化けを避ける方法や、複数回の取り込みでデータを追加する方法について解説します。このガイドでは、指定された条件を満たすためのマクロの作成方法を初心者でもわかりやすく説明します。
1. ExcelマクロでCSVファイルをUTF-8形式で取り込む方法
まず、CSVファイルをUTF-8で取り込むための基本的なマクロを作成します。デフォルトでは、ExcelはCSVファイルを通常の文字コード(Shift-JISなど)で読み込んでしまうため、文字化けが発生することがあります。これを防ぐために、ADODB.Streamオブジェクトを使用してUTF-8でファイルを取り込む方法を解説します。
以下のコードをマクロに追加することで、UTF-8のCSVファイルを読み込み、指定したシートに貼り付けることができます。
Sub ImportCSV_UTF8()
Dim fDialog As FileDialog
Dim fileName As String
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("貼付シート") ' シート名指定
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
fDialog.Title = "CSVファイルを選択"
If fDialog.Show = -1 Then
fileName = fDialog.SelectedItems(1)
With CreateObject("ADODB.Stream")
.Charset = "utf-8"
.Open
.LoadFromFile fileName
ws.Cells(1, 1).Value = .ReadText ' 貼付先シートに貼り付け
.Close
End With
End If
End Sub
このコードでは、ADODB.Streamを使ってUTF-8でファイルを読み込み、指定したシート(ここでは「貼付シート」)にデータを貼り付けます。
2. 複数回のCSVファイル取り込みとデータの追加
次に、複数回取り込む場合に、2回目以降のデータを前回のデータの直下に追加する方法について解説します。この方法では、取り込んだCSVファイルのデータを既存のデータの下に追加していきます。
以下のコードを使用すると、既存のデータの末尾に新しいデータを追加できます。
Sub AppendCSV_UTF8()
Dim fDialog As FileDialog
Dim fileName As String
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("貼付シート")
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
fDialog.Title = "CSVファイルを選択"
If fDialog.Show = -1 Then
fileName = fDialog.SelectedItems(1)
Dim LastRow As Long
LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1 ' 末尾行を取得
With CreateObject("ADODB.Stream")
.Charset = "utf-8"
.Open
.LoadFromFile fileName
ws.Cells(LastRow, 1).Value = .ReadText ' 新しいデータを追加
.Close
End With
End If
End Sub
このコードでは、ファイルを選択して読み込む際に、シート内の最終行を取得し、その下にデータを追加しています。これにより、複数回CSVファイルを取り込んでも、前回のデータの下に新しいデータが追加される形になります。
3. 改行を含むCSVファイルの取り込み問題への対応
CSVファイル内に改行が含まれていると、Excelで読み込む際に予期せぬ動作が発生することがあります。例えば、改行が含まれると、データが次の行にずれて表示されてしまいます。このような問題を回避するためには、ADODB.Streamでの読み込み時に改行を無視する方法を検討する必要があります。
改行を含んだCSVファイルを読み込む際は、テキストファイルとして処理することで、改行の影響を最小限に抑えることができます。さらに、取り込んだデータが正常に表示されるよう、データの整形を行うことも重要です。
4. まとめ
Excelマクロを使用してUTF-8形式のCSVファイルを取り込む方法は、ADODB.Streamを使用することで文字化けを防ぎ、適切にデータを取り込むことができます。また、複数回データを取り込む場合も、簡単に追加することができ、前回のデータの直下に新しいデータを追加することが可能です。改行を含むCSVファイルの取り込みには、注意が必要ですが、適切に処理することで問題を回避できます。


コメント