多数のCSVファイルの読み込みと修正
動画でExcel 多数のCSVファイルの読み込みと修正
多数の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ファイルの読み込みと修正
動画で紹介したコード
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メソッド
ファイルの選択するための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を指定した場合、複数ファイルを選択できるようになります。 |