多数のCSVファイルの読み込みと修正 マクロ講座動画解説 Excel

多数の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を指定した場合、複数ファイルを選択できるようになります。