
業務で頻繁に使われるCSVファイル。これを手作業で操作するのは非効率です。エクセルVBAマクロの便利な機能の一つを使えば、CSVファイルは簡単に操作で時短できます。
Excel VBAマクロを活用してCSVファイルを取り込む方法やサンプルコードをもとに、あなたのスキル向上と業務効率化をサポートする情報をお届けします。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 命令の意味は分かるけど、何に使うのか分からないと感じている方へ。 データ分割を題材に、実務の流れの中で理解できる講座です。 ↓↓↓↓↓
30万人が読んだ記事をもとに再構成。
▶ 自分で作れるレベルへ(こちらから閲覧できます)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Excel VBAでCSVを読み込む基本手法【初心者向け】
CSVファイルはテキスト形式でデータを保持するため、エクセルへの取り込みやデータ処理に適していますが、手作業で行うと手間がかかります。ここをVBAマクロで自動化を実現します。
・VBAコードでCSVファイルを開く
・データをエクセルシートに読み込む
・データの整形
なぜCSV取り込みにVBAを使うのか?メリットと活用シーン
VBAマクロを使うメリットは下記3つ。
VBAマクロを利用することで、CSVファイルの取り込みやデータ処理を自動化できます。反復的な作業を減らし、時間を節約できます。
手動での作業よりもVBAマクロを使うことで、データ処理の正確性と信頼性を高められます。一貫性のあるデータ処理が可能です。
VBAマクロを活用すれば、異なる形式のCSVファイルに対応したり、データの整形や特定の条件に基づいた処理を柔軟に行えます。
エクセルでCSVファイルを取り込む必要性は下記3つ。
多くの場面でCSVファイルは広く利用されています。エクセルでCSVファイルを取り込むことで、データを活用しやすくなります。
エクセルはデータを集約し、異なるデータソースを一つにまとめられるので、データ活用に重要な役割を果たします。
エクセルでCSVファイルを取り込むことで、データの分析やレポート作成がしやすくなります。ビジネス上の意思決定に役立ちます。
Excel VBAによるCSV読み込みの基本コード例
Excel VBAを使ってCSVファイルをExcelに読み込む基本的な手順を3つのステップで解説します。
Workbooks.Openメソッドでファイルを開く
Workbooks.Open メソッドを使用して、対象のCSVファイルを開きます。
- Option Explicit
- Sub OpenCSVFile()
- Workbooks.Open Filename:="C:\Users\User\Desktop\新しいフォルダー\テキスト1.csv"
- End Sub
※フォルダ、CSVは環境に合わせ修正してください。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 命令の意味は分かるけど、何に使うのか分からないと感じている方へ。 データ分割を題材に、実務の流れの中で理解できる講座です。 ↓↓↓↓↓
30万人が読んだ記事をもとに再構成。
▶ 自分で作れるレベルへ(こちらから閲覧できます)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
データを指定シートに移動する
読み込んだデータを別のシートやブックに移動させる
- Option Explicit
- Sub MoveDataToSheet()
- Dim wb As Workbook
- Set wb = Workbooks.Open(Filename:="C:\Users\User\Desktop\新しいフォルダー\テキスト1.csv")
- wb.Sheets(1).UsedRange.Copy Destination:=ThisWorkbook.Sheets("Sheet1").Range("A1")
- wb.Close SaveChanges:=False
- End Sub
開いたファイルを閉じる
作業後、開いたCSVファイルを閉じます。(不要なメモリ使用を防ぎます)
- Option Explicit
- Sub CloseCSVFile()
- Dim wb As Workbook
- Set wb = Workbooks.Open(Filename:="C:\Users\User\Desktop\新しいフォルダー\テキスト1.csv")
- wb.Close SaveChanges:=False
- End Sub
複数のCSVファイルを一括で処理コード
フォルダ内のすべてのCSVファイルを一括で開き、データを結合するコード例です。
- Option Explicit
- Sub ProcessMultipleCSVFiles()
- Dim folderPath As String
- Dim fileName As String
- Dim wb As Workbook
- folderPath = "C:\Users\User\Desktop\新しいフォルダー\"
- fileName = Dir(folderPath & "*.csv")
- Do While fileName <> ""
- Set wb = Workbooks.Open(folderPath & fileName)
- wb.Sheets(1).UsedRange.Copy _
- Destination:=ThisWorkbook.Sheets("Summary").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
- wb.Close SaveChanges:=False
- fileName = Dir
- Loop
- End Sub
※上記コード例で読み込みするCSVのコードはSJISで、カンマ区切りを想定しています。
CSVファイルの文字コードが異なる場合(例: UTF-8)、文字化けが発生する可能性があります。Excelで読み込む前に、必要に応じて文字コードを変換してください。
大量CSVを高速読み込みするQueryTables活用法
大規模CSVを早く取り込み方法に使うメソッドのQueryTablesのサンプルコードの例を紹介します。
QueryTablesメソッドを使ったサンプルコード
- Option Explicit
- Sub ImportCSVFile()
- Dim filePath As String
- Dim ws As Worksheet
- Dim targetCell As Range
- ' CSVファイルのパスを指定
- filePath = "C:\Users\User\Desktop\DataCsv\Data.csv" ' あなたのCSVファイルの場所を指定してください
- ' ワークシートを指定
- Set ws = ThisWorkbook.Sheets("Sheet1") ' 取り込み先のシートを指定してください
- ' 取り込み先セルを指定
- Set targetCell = ws.Range("A1") ' データを貼り付けるセルを指定してください
- ' CSVファイルを取り込む
- With ws.QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=targetCell)
- .TextFileParseType = xlDelimited
- .TextFilePlatform = 65001 'UTF-8
- .TextFileCommaDelimiter = True ' カンマ区切りの場合はTrue、タブ区切りの場合はFalseに設定してください
- .Refresh
- End With
- End Sub
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合った学習スタート地点がわかる無料の選択問題集をご用意しました。(VBAエキスパートベーシック資格試験から抜粋した問題です)
555点以上ならベーシック合格レベル、345〜550点はベーシック理解途中、340点以下は基礎理解不足 (※ご安心ください。この問題をされた人の情報は一切残りません。実力のチェックができる問題集で、クリックすぐにスタートではありません。解説内容の下に問題があります)
このVBAマクロのコードは、指定したパスのCSVファイルをエクセルに取り込むものです。
具体的には、`filePath`にCSVファイルのパス、`ws`に取り込み先のワークシート、`targetCell`に取り込むデータの貼り付け先を指定します。
また、`.TextFileCommaDelimiter = True`の部分は、CSVファイルがカンマで区切られている場合に使用します。もしタブで区切られている場合は、`.TextFileTabDelimiter = True`に変更してください。
このコードを実行すると、指定したCSVファイルのデータがエクセルの指定されたセルに取り込まれます。これにより、VBAマクロを使ってCSVファイルを簡単にエクセルに取り込めます。
大量データ処理でのパフォーマンス向上方法
処理速度を向上させるには、 Application.ScreenUpdating = False や Application.Calculation = xlCalculationManual を活用します。
Application.ScreenUpdating = False '画面更新を止めて高速化する方法 停止
Application.Calculation = xlCalculationManual '手動計算に設定
' 処理内容を記述
Application.Calculation = xlCalculationAutomatic '自動計算に戻す
Application.ScreenUpdating = True '画面更新を止めて高速化する方法 再開停止
- Option Explicit
- Sub ImportCSVFile()
- Application.ScreenUpdating = False
- Application.Calculation = xlCalculationManual
- Dim filePath As String
- Dim ws As Worksheet
- Dim targetCell As Range
- ' CSVファイルのパスを指定
- filePath = "C:\Users\User\Desktop\新しいフォルダー\テキスト1.csv" ' あなたのCSVファイルの場所を指定してください
- ' ワークシートを指定
- Set ws = ThisWorkbook.Sheets("Sheet1") ' 取り込み先のシートを指定してください
- ' 取り込み先セルを指定
- Set targetCell = ws.Range("A1") ' データを貼り付けるセルを指定してください
- ' CSVファイルを取り込む
- With ws.QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=targetCell)
- .TextFileParseType = xlDelimited
- .TextFilePlatform = 65001 'UTF-8
- .TextFileCommaDelimiter = True ' カンマ区切りの場合はTrue、タブ区切りの場合はFalseに設定してください
- .Refresh
- End With
- Application.Calculation = xlCalculationAutomatic
- Application.ScreenUpdating = True
- End Sub
まとめ:VBAでCSV処理業務を時短・効率化しよう
VBAマクロを使ったCSVファイルの取り込みは、効率的なデータ処理と作業の自動化を可能にします。
手作業で時間がかかる作業を、自動化することで時間を節約し、正確で信頼性の高いデータ処理を実現します。これにより、データの活用性を高め、業務効率を向上できます。
このコード、実はChatGPTでも作れます 今回紹介したマクロは、ChatGPTを活用することで自分でも作れるようになります。 ただし、多くの方が、 そこで、実際の業務でよく使われる これらを題材に、ChatGPTを使ったExcel業務自動化の方法をまとめました。 この教材で学べること ✅ ChatGPTでVBAを書く方法 VBAを一から勉強するのではなく、ChatGPTを活用して仕事を効率化したい方へ。
・エラーが出る
・思った通りに動かない
・修正方法が分からない
という壁にぶつかります。
✅ エラーを修正する方法
✅ CSV取込を自動化する方法
✅ シート分割・シート結合を自動化する方法
✅ すぐ使える実務プロンプト集


