VBA フォルダ内ファイル名一括変換



VBAでDir関数 やNameステートメントを使用してファイル名を一括で変更するコードです。


サンプルコード
Sub FileNameChange()
Dim FileP As String    

 'フォルダ選択のダイアログボックスを開く
  Application.FileDialog(msoFileDialogFolderPicker).Show
 '選択したフォルダのパス名を取得
  FileP = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
    
 'ファイル名の変換
Dim FileA As String
 '選んだフォルダの拡張子xlsを含むファイルを返す
    FileA = Dir(FileP & "\*.xls*")
    
 'フォルダ内のファイルがなくなるまで繰り返す
    Do While FileA <> ""
    
     'ファイル名の変換
      Dim Str1 As String, Str2 As String
       '変換前の対象文字列
        Str1 = "201308" '←任意で変える部分
       '変換後の文字列
        Str2 = "201310" '←任意で変える部分
       '各ファイルのStr1部分をStr2に変換する
        Name FileP & "\" & FileA  As (Replace(FileP & "\" & FileA , Str1, Str2))
    
     'Dirの指定をなくす
        FileA = Dir()
    Loop
End Sub



サンプルではファイル名の"201308"を"201310"という文字列に変換しています。
ファイル名の変換に使用しているReplace関数は、上記コードの状態ですと部分一致で置換します。


関連・類似ページ
Replace関数 (置換)
Dir関数 (フォルダの有無確認)
FileDialogオブジェクト (フォルダ選択のダイアログボックス)
Name ステートメント (ファイル名の変更)