ExcelマクロでUTF-8のCSVファイルを取り込み、データを追加入力する方法

Excel

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ファイルの取り込みには、注意が必要ですが、適切に処理することで問題を回避できます。

コメント

タイトルとURLをコピーしました