エクセルVBAマクロでCSVファイルを簡単操作!実践コードと効率化の秘訣

 

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

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

 

「VBAスキルを証明できれば、社内評価アップにつながるかもしれません
👉 VBAを学んで社内評価を上げる方法はこちら

 

 

Excel VBAマクロを使ったCSVファイル取り込む基本的な手法

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

 

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

・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ファイルの取り込みは、効率的なデータ処理と作業の自動化を可能にします。

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