【ExcelVBA】ファイル名を一括で置換する方法

ExcelVBA

大量のファイル名を一発で置換できたらいいと思ったことはありますか?

写真を整理する場合などに、写真に名前を付けていく作業があるかもしれませんね。

今回はそのような手間のかかる作業を、一瞬で終わらせる方法をご紹介します。

さっそくはじめましょう!

手順① プログラム画面の表示

まずはこちらの手順にしたがってプログラムの画面を表示させましょう。

【ExcelVBA】プログラミングする方法
Excelには業務効率化のための強力プログラミング言語が搭載されています。この記事ではそのプログラミング言語を使用するための方法を分かりやすく丁寧にご紹介します。

手順② プログラムのコピー

つぎにこちらのプログラムをコピーします。

Sub getFileName()
    
    ' 貼り付ける画像が格納されているフォルダを選択します
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = True Then
            ' 取得したフォルダパスを変数に入れる
            folderPath = .SelectedItems(1)
        End If
    End With

    ' ヘッダーを記載
    Cells(1, 1) = "フォルダパス"
    Cells(1, 2) = "ファイル拡張子"
    Cells(1, 3) = "変更前ファイル名"
    Cells(1, 4) = "変更後ファイル名"
    ' 書込セルの最初の行番号
    rowNum = 2
    ' フォルダ内のファイル名を取得
    fName = Dir(folderPath & "\")
    
    Do While fName <> ""
        ' ファイルパスをセルに転記
        Cells(rowNum, 1) = folderPath
        ' ファイル拡張子をセルに転記
        Cells(rowNum, 2) = Mid(fName, InStrRev(fName, "."))
        ' ファイル名をセルに転記
        Cells(rowNum, 3) = Mid(fName, 1, InStrRev(fName, ".") - 1)
        ' 次のファイル名を取得
        fName = Dir()
        ' 行番号の更新
        rowNum = rowNum + 1
    Loop
    
End Sub
Sub saveAsFileName()
    
    ' バックアップの確認
    ret1 = MsgBox("ファイルのバックアップは取得しましたか?", vbYesNo + vbQuestion)
    If ret1 = vbNo Then Exit Sub
    ' 実行するか確認
    ret2 = MsgBox("ファイル名の変換処理を行いますか?", vbYesNo + vbQuestion)
    If ret2 = vbNo Then Exit Sub
    
    ' 最初の行番号
    i = 2
    Do While Cells(i, 1) <> ""
        ' 変更前のファイル名を取得
        beforeFileName = Cells(i, 1) & "\" & Cells(i, 3) & Cells(i, 2)
        ' 変更後のファイル名を取得
        afterFileName = Cells(i, 1) & "\" & Cells(i, 4) & Cells(i, 2)
        ' ファイル名を変更する
        Name beforeFileName As afterFileName
        ' 行番号の更新
        i = i + 1
    Loop
    
End Sub

手順③ プログラムの貼り付け

手順①で表示した画面にコピーしたプログラムを貼り付けます。

手順④ プログラムの実行 1回目

今回は2回プログラムを実行していきます。

まずはプログラム画面の getFileName() をクリックして、上側のプログラムを選択した状態にします。

次にをクリックしてプログラムを実行します。

ポップアップ画面が開くのでファイルが格納されているフォルダを選択してOKを押します。

選択したフォルダ内のファイル名がシートに書き込まれます。

手順⑤ 変換後のファイル名を記載する

D列に変換後のファイル名を記載します。

手順⑥ プログラムの実行 2回目

プログラム画面の saveAsFileName() をクリックして、下側のプログラムを選択した状態にします。

次にをクリックしてプログラムを実行します。

実行前に必ずファイルのバックアップをとっておいてください!

バックアップを取得し終わったら「はい」をクリックします。

ファイル名の変換処理を実行するので「はい」をクリックします。

手順⑦ 実行結果

ファイル名が変更されています!!

さいごに

いかがだったでしょうか?

今回はファイル名を一括で変換する方法をご紹介しました。

今回のプログラムを実行する前には必ずファイルのバックアップをとってくださいね!

これからもみなさんの業務を時短する方法をアップしていきますので、よろしくお願いいたします。

コメント