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

 

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

 

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

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

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は環境に合わせ修正してください。

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

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

 

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

 

  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

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

この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

 

以下、業務に役立つマクロ10選を選びました。※ここをクリックで一覧表示します

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

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

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

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