エクセルでフォルダ内のファイル名を一気にリネーム変換する方法

エクセル

あなたはファイル名のつけ直し(リネーム)が面倒だと思ったことはありませんか?

仕事をしていると、同じファイル名を何度も入力することがあると思います。

例えば、「20240131 確認依頼」とか「20240131 納品書」とか。

いちいち手入力するのは大変ですよね。

そんなとき、エクセルマクロを使えば、ボタン一つでファイル名のリネームできます。

今回は「エクセルでフォルダ内のファイル名を一気にリネーム変換する方法」を紹介します。

エクセルでフォルダ内のファイル名を一気にリネーム変換する方法

エクセルでフォルダ内のファイル名を一気にリネーム変換する方法です。

下の画像のようにファイル名をリネームします。

マクロを作るときは、「開発」タブを使います。
開発タブが出ていない方は、下のリンクで出し方を紹介していますので、まずは準備をお願いします。
→エクセルで開発タブを表示する方法

1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック

2.「新規作成」をクリック

3.コード入力画面が開く

4.コードを入力

コードを入力します。

デスクトップの「ファイル名変更」フォルダ内のファイル名を、A2セルの値の名前に変換する。複数ある場合は、連番にする、という意味です。

Function以下の続きです。

赤枠部のコードです。


    Dim folderPath As String
    Dim fileName As String
    Dim extension As String
    Dim newFileName As String
    Dim filesInFolder As Collection
    Dim file As Variant
    Dim counter As Integer
    Dim excelValue As String

    ' エクセルのA2セルの値を取得
    excelValue = ThisWorkbook.Sheets("Sheet55").Range("A2").Value

    ' フォルダのパスを指定
    folderPath = Environ("USERPROFILE") & "\Desktop\ファイル名変更\"

    ' フォルダ内のすべてのファイルを取得
    Set filesInFolder = GetFilesInFolder(folderPath)

    ' ファイル名を変更
    For Each file In filesInFolder
        fileName = Dir(folderPath & file)
        If fileName <> "" Then
            ' 拡張子を取得
            extension = Right(fileName, Len(fileName) - InStrRev(fileName, "."))
            
            ' ファイル名のみを取得
            fileName = Left(fileName, Len(fileName) - Len(extension) - 1)
            
            ' 重複を避けるために、新しいファイル名がすでに存在する場合は番号を増やしていく
            counter = 1
            newFileName = excelValue & "-" & counter & "." & extension
            Do While FileExists(folderPath & newFileName)
                counter = counter + 1
                newFileName = excelValue & "-" & counter & "." & extension
            Loop
            Name folderPath & fileName & "." & extension As folderPath & newFileName
        End If
    Next file
End Sub

Function GetFilesInFolder(folderPath As String) As Collection
    Dim files As Collection
    Dim fileName As String

    Set files = New Collection

    ' フォルダ内のファイルをコレクションに追加
    fileName = Dir(folderPath & "*.*")
    Do While fileName <> ""
        If Not (Left(fileName, 1) = "." And Len(fileName) > 1) Then
            files.Add fileName
        End If
        fileName = Dir
    Loop

    Set GetFilesInFolder = files
End Function

Function FileExists(filePath As String) As Boolean
    ' ファイルが存在するか確認
    FileExists = (Dir(filePath) <> "")
End Function

コードを入力したら、コードの入力画面を閉じて下さい。

5.ボタンができた →ボタンをクリック

ボタンができました。

A2セルに変換後のファイル名を入れます。

ボタンをクリック

<クリック前>

<クリック後>

複数ファイルのファイル名を変換できました。

連番になっています。

ちなみに、エクセル、ワード、Outlookのファイルでもリネームできます。

<変換前>

<変換後>

これならファイルのリネームもラクですよね!

まとめ

エクセルでフォルダ内のファイル名を一気にリネーム変換する方法のまとめです。

1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック

2.新規作成をクリック

3.コードを入れる画面が出る

4.コードを入力

5.ボタンができた →ボタンをクリック

6.フォルダ内のファイル名がリネームできた

これで入力の手間が一気に少なくなりましたね!

コメント

タイトルとURLをコピーしました