文字コードと区切り文字を判別して、csvファイルを読み込むマクロ
タイトルのマクロは、以下です。
' 文字コードと区切り文字を判別して、csvファイルを読み込むマクロ
Sub 使用例3()
' ファイル選択ダイアログを表示して、ユーザーにCSVまたはテキストファイルを選ばせる
Dim SettingFileName As Variant
SettingFileName = Application.GetOpenFilename(FileFilter:="テキスト,*.csv;*.txt", _
Title:="ファイルの選択")
' 選択されたファイルのパスを取得
Dim filePath As String
If SettingFileName = False Then
' ユーザーがファイルを選ばなかった場合、マクロを終了
Exit Sub
Else
filePath = SettingFileName
End If
' データを取り込むシートのセル範囲を指定
Dim rng As Range
Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1")
' 改行コード・文字コード・区切り文字を取得
Dim arr As Variant
arr = GetCode(filePath)
' 取得した文字コードを変数に格納
Dim charSet As String
charSet = arr(3)
' 取得した区切り文字を変数に格納
Dim delimiter As String
delimiter = arr(1)
' csv_to_sheet_QueryTablesサブルーチンを呼び出して、CSVファイルをシートに取り込む
Call csv_to_sheet_QueryTables(filePath, rng, charSet, delimiter)
End Sub
ファイル選択ダイアログの表示
' ファイル選択ダイアログを表示して、ユーザーにCSVまたはテキストファイルを選ばせる
Dim SettingFileName As Variant
SettingFileName = Application.GetOpenFilename(FileFilter:="テキスト,*.csv;*.txt", _
Title:="ファイルの選択")
Application.GetOpenFilename
メソッドを使用して、ユーザーにCSVまたはテキストファイルを選ばせます。FileFilter
パラメーターで選択できるファイルの種類を指定し、Title
パラメーターでダイアログのタイトルを設定します。選択されたファイルのパスがSettingFileName
に格納されます。
ファイルパスの取得と確認
' 選択されたファイルのパスを取得
Dim filePath As String
If SettingFileName = False Then
' ユーザーがファイルを選ばなかった場合、マクロを終了
Exit Sub
Else
ユーザーがファイルを選択しなかった場合(SettingFileName
がFalse
の場合)、マクロを終了します。選択された場合、ファイルパスをfilePath
に格納します。
データを取り込むセル範囲の指定
' データを取り込むシートのセル範囲を指定
Dim rng As Range
Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1")
データを取り込むシートとセル範囲を指定します。この例では、シート名を”Sheet1″、セル範囲を”A1″としています。
ファイルの文字コードと区切り文字の取得
' 改行コード・文字コード・区切り文字を取得
Dim arr As Variant
arr = GetCode(filePath)
GetCode
関数を呼び出して、ファイルの文字コード(arr(3)
)、区切り文字(arr(1)
)、改行コード(arr(2)
)を取得します。このマクロでは、文字コードと区切り文字のみを使用します。
GetCode
関数は、以下を引用してください。
取得した文字コードと区切り文字の変数への格納
' 取得した文字コードを変数に格納
Dim charSet As String
charSet = arr(3)
' 取得した区切り文字を変数に格納
Dim delimiter As String
delimiter = arr(1)
GetCode
関数から取得した文字コードと区切り文字を、それぞれcharSet
とdelimiter
変数に格納します。
CSVファイルのデータをシートに取り込む
' csv_to_sheet_QueryTablesサブルーチンを呼び出して、CSVファイルをシートに取り込む
Call csv_to_sheet_QueryTables(filePath, rng, charSet, delimiter)
csv_to_sheet_QueryTables
サブルーチンを呼び出して、ファイルパス、セル範囲、文字コード、区切り文字を指定し、CSVファイルのデータをシートに取り込みます。
csv_to_sheet_QueryTables
サブルーチンは、以下から引用してください。
このマクロは、ユーザーが指定したCSVまたはテキストファイルを自動的に適切な形式で読み込み、指定されたシートにデータを取り込むことができます。