
業務で頻繁に使われるCSVファイル。これを手作業で操作するのは非効率です。エクセルVBAマクロの便利な機能の一つを使えば、CSVファイルは簡単に操作で解決できます。
Excel VBAマクロを活用してCSVファイルを取り込む方法やサンプルコードをもとに、あなたのスキル向上と業務効率化をサポートする情報をお届けします。
「VBAスキルを証明できれば、社内評価アップにつながるかもしれません
👉 VBAを学んで社内評価を上げる方法はこちら
目次
Excel VBAマクロを使ったCSVファイル取り込む基本的な手法
CSVファイルはテキスト形式でデータを保持するため、エクセルへの取り込みやデータ処理に適していますが、手作業で行うと手間がかかります。ここをVBAマクロで自動化を実現します。
・VBAコードでCSVファイルを開く
・データをエクセルシートに読み込む
・データの整形
Excel VBAマクロを使うメリットやCSVファイル取り込む必要性
VBAマクロを使うメリットは下記3つ。
VBAマクロを利用することで、CSVファイルの取り込みやデータ処理を自動化できます。反復的な作業を減らし、時間を節約できます。
手動での作業よりもVBAマクロを使うことで、データ処理の正確性と信頼性を高められます。一貫性のあるデータ処理が可能です。
VBAマクロを活用すれば、異なる形式のCSVファイルに対応したり、データの整形や特定の条件に基づいた処理を柔軟に行えます。
エクセルでCSVファイルを取り込む必要性は下記3つ。
多くの場面でCSVファイルは広く利用されています。エクセルでCSVファイルを取り込むことで、データを活用しやすくなります。
エクセルはデータを集約し、異なるデータソースを一つにまとめられるので、データ活用に重要な役割を果たします。
エクセルでCSVファイルを取り込むことで、データの分析やレポート作成がしやすくなります。ビジネス上の意思決定に役立ちます。
「VBAスキルを証明できれば、社内評価アップにつながるかもしれません
👉 VBAを学んで社内評価を上げる方法はこちら
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は環境に合わせ修正してください。
データを指定シートに移動する
読み込んだデータを別のシートやブックに移動させる
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で読み込む前に、必要に応じて文字コードを変換してください。
Excel VBA 大量データ処理に使う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スキルを証明できれば、社内評価アップにつながるかもしれません
👉 VBAを学んで社内評価を上げる方法はこちら
この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スキルを証明できれば、社内評価アップにつながるかもしれません
まとめ
VBAマクロを使ったCSVファイルの取り込みは、効率的なデータ処理と作業の自動化を可能にします。
手作業で時間がかかる作業を、自動化することで時間を節約し、正確で信頼性の高いデータ処理を実現します。これにより、データの活用性を高め、業務効率を向上できます。