CSVファイルをExcelVBAで操作する方法|自動化の時短マクロ事例つき

 

業務で頻繁に使われるCSVファイル。これを手作業で操作するのは非効率です。エクセルVBAマクロの便利な機能の一つを使えば、CSVファイルは簡単に操作で時短できます。

 

Excel VBAマクロを活用してCSVファイルを取り込む方法やサンプルコードをもとに、あなたのスキル向上と業務効率化をサポートする情報をお届けします。

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

命令の意味は分かるけど、何に使うのか分からないと感じている方へ。
30万人が読んだ記事をもとに再構成。

データ分割を題材に、実務の流れの中で理解できる講座です。

↓↓↓↓↓
自分で作れるレベルへ(こちらから閲覧できます)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 

Excel VBAでCSVを読み込む基本手法【初心者向け】

 

 

CSVファイルはテキスト形式でデータを保持するため、エクセルへの取り込みやデータ処理に適していますが、手作業で行うと手間がかかります。ここをVBAマクロで自動化を実現します。

 

CSVファイルの取り込みの基本的な手法

・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ファイルを開きます。

 

  1. Option Explicit
  2. Sub OpenCSVFile()
  3.     Workbooks.Open Filename:="C:\Users\User\Desktop\新しいフォルダー\テキスト1.csv"
  4. End Sub

 

※フォルダ、CSVは環境に合わせ修正してください。

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

命令の意味は分かるけど、何に使うのか分からないと感じている方へ。
30万人が読んだ記事をもとに再構成。

データ分割を題材に、実務の流れの中で理解できる講座です。

↓↓↓↓↓
自分で作れるレベルへ(こちらから閲覧できます)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 

データを指定シートに移動する

 

読み込んだデータを別のシートやブックに移動させる

 

  1. Option Explicit
  2. Sub MoveDataToSheet()
  3.     Dim wb As Workbook
  4.     Set wb = Workbooks.Open(Filename:="C:\Users\User\Desktop\新しいフォルダー\テキスト1.csv")
  5.     wb.Sheets(1).UsedRange.Copy Destination:=ThisWorkbook.Sheets("Sheet1").Range("A1")
  6.     wb.Close SaveChanges:=False
  7. End Sub

 

開いたファイルを閉じる

 

作業後、開いたCSVファイルを閉じます。(不要なメモリ使用を防ぎます)

 

  1. Option Explicit
  2. Sub CloseCSVFile()
  3.     Dim wb As Workbook
  4.     Set wb = Workbooks.Open(Filename:="C:\Users\User\Desktop\新しいフォルダー\テキスト1.csv")
  5.     wb.Close SaveChanges:=False
  6. End Sub

 

複数のCSVファイルを一括で処理コード

 

フォルダ内のすべてのCSVファイルを一括で開き、データを結合するコード例です。

 

  1. Option Explicit
  2. Sub ProcessMultipleCSVFiles()
  3.     Dim folderPath As String
  4.     Dim fileName As String
  5.     Dim wb As Workbook
  6.     
  7.     folderPath = "C:\Users\User\Desktop\新しいフォルダー\"
  8.     fileName = Dir(folderPath & "*.csv")
  9.     
  10.     Do While fileName <> ""
  11.         Set wb = Workbooks.Open(folderPath & fileName)
  12.         wb.Sheets(1).UsedRange.Copy _
  13.             Destination:=ThisWorkbook.Sheets("Summary").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
  14.         wb.Close SaveChanges:=False
  15.         fileName = Dir
  16.     Loop
  17. End Sub

 

※上記コード例で読み込みするCSVのコードはSJISで、カンマ区切りを想定しています。

 

データ形式に関する問題

CSVファイルの文字コードが異なる場合(例: UTF-8)、文字化けが発生する可能性があります。Excelで読み込む前に、必要に応じて文字コードを変換してください。

 

大量CSVを高速読み込みするQueryTables活用法

 

大規模CSVを早く取り込み方法に使うメソッドのQueryTablesのサンプルコードの例を紹介します。

 

QueryTablesメソッドを使ったサンプルコード

 

  1. Option Explicit
  2. Sub ImportCSVFile()
  3.     Dim filePath As String
  4.     Dim ws As Worksheet
  5.     Dim targetCell As Range
  6.     ' CSVファイルのパスを指定
  7.     filePath = "C:\Users\User\Desktop\DataCsv\Data.csv" ' あなたのCSVファイルの場所を指定してください
  8.     ' ワークシートを指定
  9.     Set ws = ThisWorkbook.Sheets("Sheet1") ' 取り込み先のシートを指定してください
  10.     ' 取り込み先セルを指定
  11.     Set targetCell = ws.Range("A1") ' データを貼り付けるセルを指定してください
  12.     ' CSVファイルを取り込む
  13.     With ws.QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=targetCell)
  14.         .TextFileParseType = xlDelimited
  15.         .TextFilePlatform = 65001 'UTF-8
  16.         .TextFileCommaDelimiter = True ' カンマ区切りの場合はTrue、タブ区切りの場合はFalseに設定してください
  17.         .Refresh
  18.     End With
  19. End Sub

 

自分の実力を客観的にチェックしたい。そんな方のために、自分に合った学習スタート地点がわかる無料の選択問題集をご用意しました。(VBAエキスパートベーシック資格試験から抜粋した問題です)

無料138問でいまの実力をチェック

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 '画面更新を止めて高速化する方法 再開停止

 

  1. Option Explicit
  2. Sub ImportCSVFile()
  3.     Application.ScreenUpdating = False
  4.     Application.Calculation = xlCalculationManual
  5.     
  6.     Dim filePath As String
  7.     Dim ws As Worksheet
  8.     Dim targetCell As Range
  9.         
  10.     ' CSVファイルのパスを指定
  11.     filePath = "C:\Users\User\Desktop\新しいフォルダー\テキスト1.csv" ' あなたのCSVファイルの場所を指定してください
  12.     ' ワークシートを指定
  13.     Set ws = ThisWorkbook.Sheets("Sheet1") ' 取り込み先のシートを指定してください
  14.     ' 取り込み先セルを指定
  15.     Set targetCell = ws.Range("A1") ' データを貼り付けるセルを指定してください
  16.     ' CSVファイルを取り込む
  17.     With ws.QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=targetCell)
  18.         .TextFileParseType = xlDelimited
  19.         .TextFilePlatform = 65001 'UTF-8
  20.         .TextFileCommaDelimiter = True ' カンマ区切りの場合はTrue、タブ区切りの場合はFalseに設定してください
  21.         .Refresh
  22.     End With
  23.     Application.Calculation = xlCalculationAutomatic
  24.     Application.ScreenUpdating = True
  25. End Sub

 

まとめ:VBAでCSV処理業務を時短・効率化しよう

VBAマクロを使ったCSVファイルの取り込みは、効率的なデータ処理と作業の自動化を可能にします。

手作業で時間がかかる作業を、自動化することで時間を節約し、正確で信頼性の高いデータ処理を実現します。これにより、データの活用性を高め、業務効率を向上できます。

 

このコード、実はChatGPTでも作れます

今回紹介したマクロは、ChatGPTを活用することで自分でも作れるようになります。

ただし、多くの方が、
・エラーが出る
・思った通りに動かない
・修正方法が分からない
という壁にぶつかります。

そこで、実際の業務でよく使われる

  • 別ブックコピー
  • シート名変更
  • CSV取込
  • シート結合
  • シート分割

これらを題材に、ChatGPTを使ったExcel業務自動化の方法をまとめました。

この教材で学べること

✅ ChatGPTでVBAを書く方法
✅ エラーを修正する方法
✅ CSV取込を自動化する方法
✅ シート分割・シート結合を自動化する方法
✅ すぐ使える実務プロンプト集

VBAを一から勉強するのではなく、ChatGPTを活用して仕事を効率化したい方へ。

ChatGPTで作るExcel業務自動化スターターキットを見る(記事途中から有料:980円)