動画でExcel マクロ講座57回CSV
動画版「マクロ講座」です。
今回は複数のあるいは多数の CSV ファイルをまとめて1シートごとに読み込むというマクロを作成します。
CSV ファイルの場合1枚でしたら、エクセルから直接読み込んだり、ダブルクリックでExcel で開くこともできますので、それほどマクロの必要性を感じることはありませんまる。ただ量が多いと話は別です。
Sub 複数CSV呼出()
Dim Mycsv As Variant, Newbook As Workbook, Opencsv As Workbook
Dim CountSh As Long, データ型(10) As Variant, i As Long
Mycsv = Application.GetOpenFilename( _
FileFilter:="CSVファイル,*.csv;*.txt", MultiSelect:=True)
If IsArray(Mycsv) Then
For i = 1 To 10
データ型(i) = Array(i, 1)
Next i
Set Newbook = Workbooks.Add
CountSh = Newbook.Worksheets.Count
For i = 1 To UBound(Mycsv)
Workbooks.OpenText Filename:=Mycsv(i), Origin:=65001, StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, _
Comma:=True, Space:=False, Other:=False, _
FieldInfo:=データ型(i), TrailingMinusNumbers:=True
Set Opencsv = ActiveWorkbook
ActiveSheet.Copy After:=Newbook.Worksheets(CountSh)
ActiveCell.CurrentRegion.Columns.AutoFit
Opencsv.Close False
Next i
End If
End Sub
ファイルの選択するためのGetOpenFilenameメソッドの書式と引数の説明
Application.GetOpenFilename(FileFilter, FilterIndex, Title, MultiSelect)
ファイルを開くダイアログをマクロの中で使いたい時に、利用するのが、GetOpenFilenameメソッドです。
親オブジェクトは、 Applicationオブジェクトになります。
| パラメータ | 省略可否 | データ型 | 引数の内容 |
|---|---|---|---|
| FileFilter | 〇 | Variant型 | ファイルの候補(種類)を指定する文字列(ファイルフィルタ文字列)を指定します。省略すると種類は「"すべてのファイル (*.*),*.*"」になります。 |
| FilterIndex | 〇 | Variant型 | 引数「FileFilter」で指定した「ファイルフィルタ文字列,ワイルドカードのペア」において、何番目のペアを既定値とするかを指定します。この引数を省略するか、「ファイルフィルタ文字列,ワイルドカードのペア」のペア数より大きな値を指定すると、1番目の「ファイルフィルタ文字列,ワイルドカードのペア」が規定値となります。 |
| Title | 〇 | Variant型 | [ファイルを開く]ダイアログボックスのタイトルを指定します。これを省略すると、デフォルト”ファイルを開く" になります。 |
| ButtonText | 〇 | Variant型 | Macintoshのみ指定できます。 |
| MultiSelect | 〇 | Variant型 | TrueかFalseを指定します。Trueを指定した場合、複数ファイルを選択できるようになります。 |