Excel VBAでCSVデータを保存し読み込む方法

Visual Basic

Excel VBAを使用してCSVファイルを保存し、再度そのデータを読み込む方法について解説します。具体的なコード例とともに、注意点や調整方法を詳しく説明します。

CSVファイルを保存するVBAコード

Excelで作成したシートをCSV形式で保存する方法は非常に簡単です。以下のコードで、`Sheet1`をCSV形式で保存できます。

Sub csv1()
Sheets("Sheet1").Copy
With Application
.ScreenUpdating = False
.DisplayAlerts = False

With ActiveWorkbook
.SaveAs ThisWorkbook.Path & "\" & "t.csv", xlCSV
.Close
End With

.ScreenUpdating = False
.DisplayAlerts = True

End With
End Sub

このコードでは、`Sheet1`を新たなワークブックとしてコピーし、CSVとして保存しています。保存先のパスやファイル名は、適宜変更してください。

CSVデータを取り込むVBAコード

CSVファイルをExcelにインポートするには、`QueryTable`を使用します。以下はCSVファイルをインポートするためのコードです。

Sub Testsss()
 Dim wsImport As Worksheet
 Set wsImport = Worksheets("t") 'CSVデータを取り込み用シート

 '読み込むファイル
 Dim strFilePath As String
 strFilePath = "C:\Users\p\デスクトップ\t.csv"
 Application.ScreenUpdating = False

 Dim queryTb As QueryTable
 Set queryTb = wsImport.QueryTables.Add(Connection:="TEXT;" & strFilePath, _
 Destination:=wsImport.Range("A1")) ' CSV を開く
 With queryTb
 .TextFilePlatform = 932 ' 文字コードを指定
 .TextFileParseType = xlDelimited ' 区切り文字の形式
 .TextFileCommaDelimiter = True ' カンマ区切り
 .RefreshStyle = xlOverwriteCells ' セルに書き込む方式
 .Refresh ' データを表示
 .Delete ' CSVファイルとの接続を解除
 End With

Application.ScreenUpdating = True
End Sub

このコードでは、指定されたCSVファイルを読み込み、指定したシートにそのデータをインポートします。`TextFilePlatform`で文字コードを指定し、`TextFileCommaDelimiter`でカンマ区切りを指定しています。

コード内の設定について

質問の中で触れられている`TextFilePlatform = 932`や`TextFileCommaDelimiter = True`などの設定は、CSVファイルの読み込みにおいて重要な部分です。これらの設定は、ファイルが正しく読み込まれるようにするために必要です。特に、文字コードを`932`に設定することで、Shift-JISエンコードされたCSVファイルを正しく処理できます。

まとめ

Excel VBAを使ってCSVファイルを保存し、再度そのデータを読み込む方法を紹介しました。CSVファイルの保存とインポートは、`SaveAs`と`QueryTables.Add`を使用して簡単に実行できます。`TextFilePlatform`や`TextFileCommaDelimiter`などの設定を適切に行うことで、データを正確に読み込むことができます。

コメント

タイトルとURLをコピーしました