CSVファイルに保存されているデータをExcelに取り込むことで、データの編集や集計が簡単になります。
今回は、VBAを使ってCSVのデータをExcelのシートに自動で転記する方法をご紹介します。
VBAの詳しい説明は別の記事にまとめていますので、そちらも参考にしてください。
【VBA入門】Excelを自動化して業務を効率化!
VBA(Visual Basic for Applications)は、Microsoft ExcelなどのOffice製品に組み込まれているプログラミング言語です。Excelの作業を自動化したり、繰り返し処理を行ったりといった便利な機能を追加できます。
【初心者向け】Excelで「開発」タブを表示させる方法
Excelを使っていると、「開発」タブが表示されていないことに気づくかもしれません。
「開発」タブは、VBAやマクロを利用する際に必要となります。このタブを表示させることで、Excelでの操作を自動化したり、高度な機能を使えるようになります。
準備
- CSVファイルの用意
CSVファイルは、Excelと同じフォルダに保存しておくと便利です。今回の記事では、ファイル名を「sample.csv」とします。 - Excelの「開発」タブを表示
VBAを使うには「開発」タブが必要です。 - VBAエディタの起動
「開発」タブの「Visual Basic」をクリックし、VBAエディタを開きます。
サンプルコード
以下が、CSVファイルをExcelに転記するためのVBAコードです。簡単なコードなので、ぜひそのまま貼り付けて使ってみてください。
※MacBookを使用しているため、表示やパスの指定の仕方に違いがあるので、お手持ちの環境に合わせてください
コードの書き方
- 新しいモジュールを追加
VBAエディタのメニューから「挿入」→「標準モジュール」を選択し、新しいモジュールを追加します。 - コードを貼り付ける
以下のコードをモジュールに貼り付けてください。
※「"/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のサンプルですが、中身を書き換えても大丈夫です。
りんご
バナナ
いちご
ぶどう
オレンジ
さくらんぼ
パイナップル
キウイ
メロン
スイカ
レモン
マンゴー
モモ
ブルーベリー
グレープフルーツ
ナシ
アボカド
パッションフルーツ
ドラゴンフルーツ
ライチ
コードの説明
- 貼り付けるシートを指定
Set ws = ThisWorkbook.Sheets(1)
で、CSVデータを貼り付けるシートを指定しています。ここでは、Excelファイルの最初のシート(Sheet1)にデータを貼り付ける設定です。 - CSVファイルのパスを指定
csvPath = ThisWorkbook.Path & "\sample.csv"
の行で、CSVファイルのパスを指定しています。Excelファイルと同じフォルダにある「sample.csv」を指定していますが、別のファイル名やパスがある場合は適宜変更してください。 - CSVの各行を読み込んで転記
Do Until EOF(1)
から始まる部分では、CSVファイルの内容を1行ずつ読み込み、シートに転記しています。rowNumber
は行番号を管理していて、各行のデータを次の行に貼り付けるために使います。 - ファイルを閉じる
Close #1
でCSVファイルを閉じます。これを忘れると、次にファイルを開く際にエラーが出る場合があるので注意しましょう。
実行方法
コードを貼り付けたら、VBAエディタを閉じて「開発」タブの「マクロ」をクリックし、ImportCSV
を選んで実行します。処理が完了すると、CSVの内容がExcelのシートに転記され、最後に「CSVファイルのインポートが完了しました!」というメッセージが表示されます。
よく起こるエラー
文字化け
出力はできたけど、文字化けしてしまうことがあります。
元のCSVの文字コードを確認して、Shift-JISになっていることを確認してください
パスは合ってるのに、CSVが開けない
権限がない状態になっていることがあるので、コマンド等で権限を確認・必要な権限を与えるようにしてください
まとめ
このように、VBAを使えばCSVの内容をExcelに簡単に取り込むことができます。これを使って、日々のデータ入力や更新作業を効率化しましょう。