【コピペで使える】VBAでCSVファイルの内容をExcelに転記する方法

VBA

CSVファイルに保存されているデータをExcelに取り込むことで、データの編集や集計が簡単になります。
今回は、VBAを使ってCSVのデータをExcelのシートに自動で転記する方法をご紹介します。
VBAの詳しい説明は別の記事にまとめていますので、そちらも参考にしてください。

【VBA入門】Excelを自動化して業務を効率化!
VBA(Visual Basic for Applications)は、Microsoft ExcelなどのOffice製品に組み込まれているプログラミング言語です。Excelの作業を自動化したり、繰り返し処理を行ったりといった便利な機能を追加できます。
【初心者向け】Excelで「開発」タブを表示させる方法
Excelを使っていると、「開発」タブが表示されていないことに気づくかもしれません。 「開発」タブは、VBAやマクロを利用する際に必要となります。このタブを表示させることで、Excelでの操作を自動化したり、高度な機能を使えるようになります。

準備

  1. CSVファイルの用意
    CSVファイルは、Excelと同じフォルダに保存しておくと便利です。今回の記事では、ファイル名を「sample.csv」とします。
  2. Excelの「開発」タブを表示
    VBAを使うには「開発」タブが必要です。
  3. VBAエディタの起動
    「開発」タブの「Visual Basic」をクリックし、VBAエディタを開きます。

サンプルコード

以下が、CSVファイルをExcelに転記するためのVBAコードです。簡単なコードなので、ぜひそのまま貼り付けて使ってみてください。
※MacBookを使用しているため、表示やパスの指定の仕方に違いがあるので、お手持ちの環境に合わせてください

コードの書き方

  1. 新しいモジュールを追加
    VBAエディタのメニューから「挿入」→「標準モジュール」を選択し、新しいモジュールを追加します。
  2. コードを貼り付ける
    以下のコードをモジュールに貼り付けてください。
    ※「"/sample.csv"」は、実際に置いたCSVを指定してください
Sub ImportCSV()
Dim ws As Worksheet
Dim wb As Workbook
Dim csvPath As String
Dim csvLine As String
Dim rowNumber As Long

' データを貼り付けるシートを指定
Set ws = ThisWorkbook.Sheets(1)

' CSVファイルのパスを指定
csvPath = "/sample.csv" ' パスを正確に指定

' CSVファイルをワークブックとして開く
Set wb = Workbooks.Open(csvPath)

rowNumber = 1 ' 最初の行から貼り付けを開始

' 開いたワークブックの最初のシートの各行を読み込み、Excelに貼り付ける
Dim csvRow As Range
For Each csvRow In wb.Sheets(1).UsedRange.Rows
ws.Cells(rowNumber, 1).Value = csvRow.Cells(1, 1).Value ' 最初の列の値を貼り付け
rowNumber = rowNumber + 1
Next csvRow

' 開いたCSVファイルを閉じる
wb.Close SaveChanges:=False

MsgBox "CSVファイルのインポートが完了しました!"
End Sub

下記は、CSVのサンプルですが、中身を書き換えても大丈夫です。

りんご
バナナ
いちご
ぶどう
オレンジ
さくらんぼ
パイナップル
キウイ
メロン
スイカ
レモン
マンゴー
モモ
ブルーベリー
グレープフルーツ
ナシ
アボカド
パッションフルーツ
ドラゴンフルーツ
ライチ

コードの説明

  1. 貼り付けるシートを指定
    Set ws = ThisWorkbook.Sheets(1) で、CSVデータを貼り付けるシートを指定しています。ここでは、Excelファイルの最初のシート(Sheet1)にデータを貼り付ける設定です。
  2. CSVファイルのパスを指定
    csvPath = ThisWorkbook.Path & "\sample.csv" の行で、CSVファイルのパスを指定しています。Excelファイルと同じフォルダにある「sample.csv」を指定していますが、別のファイル名やパスがある場合は適宜変更してください。
  3. CSVの各行を読み込んで転記
    Do Until EOF(1)から始まる部分では、CSVファイルの内容を1行ずつ読み込み、シートに転記しています。rowNumber は行番号を管理していて、各行のデータを次の行に貼り付けるために使います。
  4. ファイルを閉じる
    Close #1 でCSVファイルを閉じます。これを忘れると、次にファイルを開く際にエラーが出る場合があるので注意しましょう。

実行方法

コードを貼り付けたら、VBAエディタを閉じて「開発」タブの「マクロ」をクリックし、ImportCSV を選んで実行します。処理が完了すると、CSVの内容がExcelのシートに転記され、最後に「CSVファイルのインポートが完了しました!」というメッセージが表示されます。

よく起こるエラー

文字化け

出力はできたけど、文字化けしてしまうことがあります。
元のCSVの文字コードを確認して、Shift-JISになっていることを確認してください

パスは合ってるのに、CSVが開けない

権限がない状態になっていることがあるので、コマンド等で権限を確認・必要な権限を与えるようにしてください

まとめ

このように、VBAを使えばCSVの内容をExcelに簡単に取り込むことができます。これを使って、日々のデータ入力や更新作業を効率化しましょう。

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