動画でExcel 多数のCSVファイルの読み込みと修正
動画版「マクロ講座58回」です。
ExcelVBAで多数CSVの操作 その2です。
1.CSV SHIFT-JIS での読み込み
2.CSV SHIFT-JIS をまとめて連続修正して閉じる
前回は、UTF-8のCSVを読み込んで、1つのブックにまとめました。このマクロから、不要なコードを削除しながら、SHIFT-JISのCSVを読み込むコードにリメイクします。
また、複数CSVファイルの修正を行いたい場合もあります。そこで、多数CSVを修正するマクロへと、コードをリメイクします。
今回も、Application.GetOpenFilenameメソッドを利用しています。
他に、Workbooks.OpenTextメソッドも利用しています。
動画内では、マクロを実行中であることが、わかるようにあえて、
Application.DisplayAlerts = False
のコードを記述していませんが、画面がちらちらするのが気になる場合は、
Application.DisplayAlerts = False
”ちらつく原因となるコード”
Application.DisplayAlerts = True
で挟むといいでしょう。
CSVファイルを読み込むにも書き込むにも、UTF-8とShift-JISを分けて考える必要があります。
1つ目はユーザーにフォルダを指定してもらい、CSVを読み込むコードです。
2つ目のコードは、Shift-JISのCSVファイルのデータで、2023を2024に書き替えたい場合のコードとなります。
Sub 複数CSV呼出JIS版()
Dim Mycsv As Variant, Newbook As Workbook, Opencsv As Workbook
Dim CountSh As Long, i As Long
Mycsv = Application.GetOpenFilename( _
FileFilter:="CSVファイル,*.csv;*.txt", MultiSelect:=True)
If IsArray(Mycsv) Then
Set Newbook = Workbooks.Add
CountSh = Newbook.Worksheets.Count
For i = 1 To UBound(Mycsv)
Workbooks.OpenText Filename:=Mycsv(i), Origin:=932, StartRow:=1, Comma:=True
Set Opencsv = ActiveWorkbook
ActiveSheet.Copy After:=Newbook.Worksheets(CountSh)
ActiveCell.CurrentRegion.Columns.AutoFit
Opencsv.Close False
Next i
End If
End Sub
Sub 複数CSV呼出して修正JIS版()
Dim Mycsv As Variant, i As Long
Mycsv = Application.GetOpenFilename( _
FileFilter:="CSVファイル,*.csv;*.txt", MultiSelect:=True)
If IsArray(Mycsv) Then
For i = 1 To UBound(Mycsv)
Workbooks.OpenText Filename:=Mycsv(i), Origin:=932, _
StartRow:=1, DataType:=xlDelimited, Comma:=True
Cells.Replace What:="2023", Replacement:="2024", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
ActiveWorkbook.Save
ActiveWindow.Close
Next
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を指定した場合、複数ファイルを選択できるようになります。 |