- 公開日:
エクセルでCSVを自動で取り込む方法
エクセルにCSVファイルを取り込みたい場合、手作業で行うのは非常に手間がかかります。自動化することでミスを減らし作業がスムーズになります。
本記事では、 エクセルでCSVを自動で取り込む方法を解説します。
エクセルに備わっている便利な機能で簡単に自動化できます。VBAコードも紹介するので、コピーしてご活用ください。
エクセルでCSVを自動で取り込む方法
Power QueryでCSVを自動で取り込む方法
エクセルには「Power Query」という機能があり、これを使うとシートに自動的にCSVファイルのデータを取り込むことができます。
以下の設定をすることで、ブックを開くだけでCSVファイルのデータを自動的に同期して取り込めるようになります。
CSVファイルに変更があった場合、都度変更したファイルを手動でインポートする/更新ボタンを押す必要がなくなるので大変便利です。
まずは、設定するために、ExcelにCSVファイルを取り込みます。
Power Queryを使ってCSVファイルを取り込む方法については、以下の記事の「Power Queryで変換する」セクションを参照してください。
ExcelにCSVファイルが取り込めたら、次は設定を行います。
①「データ」タブ、②クエリと接続の「プロパティ」の順に選択します。
「外部データのプロパティ」ダイアログボックスが表示されました。
「プロパティ」ボタンを押します。
「クエリ プロパティ」ダイアログボックスが表示されました。
①「定期的に更新する」にチェックマークを入れ、②CSVファイルのデータを更新する時間(例:1分)を入力します。これにより、ブックを開いた状態で更新ボタンを押さなくても自動でデータが更新されます。
③「ファイルを開くときにデータを更新する」にチェックマークを入れ、④「OK」ボタンを押します。
設定が完了したので、「OK」ボタンを押します。
名前を付けて保存して、Excelを閉じます。
試しに、CSVファイルのデータを変更してみます。
名前を「田中」から「山田」に変更します。
保存したブックを開きます。
①フォルダー(例: デスクトップ)を選択し、②ブック(例:名簿.xlsx)の順に選択します。
Excelが開くと、名前が変更されて表示されました。
0落ちしないで取り込みたい場合
Power QueryでCSVファイルを0落ちせずに取り込みたい場合は、以下の記事「0落ちしないようする」セクションを参照してください。
0落ちとは、エクセルでCSVファイルを読み込む際にデータの先頭にある「0」が抜け落ちて読み込まれてしまう現象を指します。
例えば、上の画像のC2セルのように「001」というデータが「1」と表示されます。これは、エクセルが自動的にデータの形式を変更して表示してしまうことが原因です。
複数のCSVをまとめて取り込みたい場合
複数のCSVファイルをまとめて取り込みたい場合、Power Queryが便利です。
手動で1つ1つファイルをコピー&ペーストしなくても、フォルダの中身を自動で認識し、複数のファイルを取り込んで集計できます。
Power Queryを使って、複数のCSVファイルをまとめて取り込む方法について解説します。
ここでは、複数のCSVファイルを一つのフォルダにまとめてあります。
Excelを開きます。
①「データ」タブ、②データの取得と変換の「データの取得」、③「ファイルから」、④「フォルダーから」の順に選択します。
「参照」ダイアログボックスが表示されました。
①フォルダー(例: デスクトップ)、②複数のCSVファイルが格納してあるフォルダー(例:名簿)の順に選択し、③「開く」ボタンを押します。
変換後のプレビューが表示されました。
①「結合」、②「データの結合と変換」の順に選択します。
「ファイルの結合」ダイアログボックスが表示されました。
「OK」ボタンを押します。
Power Query エディターが開きます。
必要に応じて不要な箇所を削除し、「閉じて読み込む」を選択します。
同じブックの別シートに各ファイルのデータが表示されます。
複数のCSVファイルをまとめて取り込むことができました。
VBAでCSVを自動で取り込む方法
CSVファイルをエクセルへ取り込むのは手作業で行うと手間がかかります。
VBAを使えば、1クリックで簡単にCSVファイルを自動で取り込むことを実現できます。
以下では、CSVファイルを自動で取り込むコードをご紹介します。
①「開発」タブ、②「Visual Basic」の順に選択します。
「Microsoft Visual Basic for Applications」ダイアログボックスが表示されました。
①「挿入」タブ、②「標準モジュール」の順に選択します。
標準モジュールが表示されました。以下のコードをコピーして貼り付けます。
Sub ImportCSV()
Dim folderPath As String, fileName As String
Dim ws As Worksheet, targetCell As Range
folderPath = "C:\Users\ユーザー名\OneDrive\デスクトップ\フォルダ名\" ' フォルダーのパスを指定
Set ws = ThisWorkbook.Sheets("Sheet1")
ws.Cells.Clear
fileName = Dir(folderPath & "*.csv")
Do While fileName <> ""
If ws.Cells(1, 1).Value = "" Then
Set targetCell = ws.Range("A1")
Else
Set targetCell = ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(1)
End If
With ws.QueryTables.Add(Connection:="TEXT;" & folderPath & fileName, Destination:=targetCell)
.TextFileParseType = xlDelimited
.TextFilePlatform = 65001
.TextFileCommaDelimiter = True
.Refresh BackgroundQuery:=False
End With
fileName = Dir
Loop
End Sub
このコードは、指定したフォルダー内のすべてのCSVファイルをExcelの指定シートに順に取り込みます。
最初のCSVファイルはA1セルに、以降のファイルは前のデータの下に連続して追加されます。
「folderPath」でCSVファイルが含まれるフォルダーのパスを指定し、「ws
」でデータを取り込むシートを指定します。
①「ファイル」タブ、②「(ファイル名).xlsxの上書き保存」の順に選択します。
「名前を付けて保存」ダイアログボックスが表示されました。①保存したいフォルダー(例: デスクトップ)を選択します。
②ファイル名(例:CSVを自動で取り込む.xlsm)を入力し、③「ファイルの種類」のプルダウンから「Excel マクロ有効ブック」を選択し、④「保存」ボタンを押します。
Excelの編集画面に戻ります。
①「開発」タブ、③「マクロ」の順に選択します。
「マクロ」ダイアログボックスが表示されました。
①マクロ名(例:ImportCSV)を選択し、②「実行」ボタンを押します。
CSVファイルを自動で取り込むことができました。