• 公開日:

エクセルでCSVを自動で取り込む方法

エクセルにCSVファイルを取り込みたい場合、手作業で行うのは非常に手間がかかります。自動化することでミスを減らし作業がスムーズになります。

本記事では、 エクセルでCSVを自動で取り込む方法を解説します。

エクセルに備わっている便利な機能で簡単に自動化できます。VBAコードも紹介するので、コピーしてご活用ください。

エクセルでCSVを自動で取り込む方法

Power QueryでCSVを自動で取り込む方法

エクセルには「Power Query」という機能があり、これを使うとシートに自動的にCSVファイルのデータを取り込むことができます。

以下の設定をすることで、ブックを開くだけでCSVファイルのデータを自動的に同期して取り込めるようになります。

CSVファイルに変更があった場合、都度変更したファイルを手動でインポートする/更新ボタンを押す必要がなくなるので大変便利です。

Power QueryでCSVを自動で取り込む

まずは、設定するために、ExcelにCSVファイルを取り込みます。

Power Queryを使ってCSVファイルを取り込む方法については、以下の記事の「Power Queryで変換する」セクションを参照してください。

テキストからエクセルに変換する方法

プロパティを選択する

ExcelにCSVファイルが取り込めたら、次は設定を行います。

「データ」タブ、②クエリと接続の「プロパティ」の順に選択します。

プロパティボタンを押す

「外部データのプロパティ」ダイアログボックスが表示されました。

「プロパティ」ボタンを押します

ファイルを開く時にデータを変換するを選択する

「クエリ プロパティ」ダイアログボックスが表示されました。

「定期的に更新する」にチェックマークを入れ、②CSVファイルのデータを更新する時間(例:1分)を入力します。これにより、ブックを開いた状態で更新ボタンを押さなくても自動でデータが更新されます。

「ファイルを開くときにデータを更新する」にチェックマークを入れ、④「OK」ボタンを押します

OKボタンを押す

設定が完了したので、「OK」ボタンを押します

名前を付けて保存して、Excelを閉じます。

データを変更する

試しに、CSVファイルのデータを変更してみます。

名前を「田中」から「山田」に変更します。

ファイルを開く

保存したブックを開きます。

フォルダー(例: デスクトップ)を選択し、②ブック(例:名簿.xlsx)の順に選択します。

Power QueryでCSVを自動で取り込めた

Excelが開くと、名前が変更されて表示されました。

0落ちしないで取り込みたい場合

0落ちしないで取り込みたい場合

Power QueryでCSVファイルを0落ちせずに取り込みたい場合は、以下の記事「0落ちしないようする」セクションを参照してください。

0落ちとは、エクセルでCSVファイルを読み込む際にデータの先頭にある「0」が抜け落ちて読み込まれてしまう現象を指します。

例えば、上の画像のC2セルのように「001」というデータが「1」と表示されます。これは、エクセルが自動的にデータの形式を変更して表示してしまうことが原因です。

ExcelとCSV(カンマ区切り)の情報まとめ

複数のCSVをまとめて取り込みたい場合

複数のCSVファイルをまとめて取り込みたい場合、Power Queryが便利です。

手動で1つ1つファイルをコピー&ペーストしなくても、フォルダの中身を自動で認識し、複数のファイルを取り込んで集計できます。

Power Queryを使って、複数のCSVファイルをまとめて取り込む方法について解説します。

複数のCSVファイルを準備する

ここでは、複数のCSVファイルを一つのフォルダにまとめてあります。

フォルダーからを選択する

Excelを開きます。

「データ」タブ、②データの取得と変換の「データの取得」、③「ファイルから」、④「フォルダーから」の順に選択します。

フォルダを選択する

「参照」ダイアログボックスが表示されました。

フォルダー(例: デスクトップ)、②複数のCSVファイルが格納してあるフォルダー(例:名簿)の順に選択し、③「開く」ボタンを押します

データの結合と変換を選択する

変換後のプレビューが表示されました。

「結合」、②「データの結合と変換」の順に選択します。

OKボタンを押す

「ファイルの結合」ダイアログボックスが表示されました。

「OK」ボタンを押します

閉じて読み込む

Power Query エディターが開きます。

必要に応じて不要な箇所を削除し、「閉じて読み込む」を選択します。

Power QueryでCSVを自動で取り込めた

同じブックの別シートに各ファイルのデータが表示されます。

複数のCSVファイルをまとめて取り込むことができました。

VBAでCSVを自動で取り込む方法

CSVファイルをエクセルへ取り込むのは手作業で行うと手間がかかります。

VBAを使えば、1クリックで簡単にCSVファイルを自動で取り込むことを実現できます。

以下では、CSVファイルを自動で取り込むコードをご紹介します。

開発タブを追加する

今回はVBAを使って操作を行います。

VBAの操作には「開発タブ」が必要ですが、デフォルトでは表示されていないため下記の記事を参考に設定を行いましょう。

エクセルの開発タブを表示する方法

Visual Basicを開く

「開発」タブ、②「Visual Basic」の順に選択します。

標準モジュールを選択する

「Microsoft Visual Basic for Applications」ダイアログボックスが表示されました。

「挿入」タブ、②「標準モジュール」の順に選択します。

VBAコードを入力する

標準モジュールが表示されました。以下のコードをコピーして貼り付けます。

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)を選択し、②「実行」ボタンを押します。

VBAでCSVを自動で取り込めた

CSVファイルを自動で取り込むことができました。