非プログラマーでもできる!業務の自動化

【VBAマクロファイルダウンロード】フォルダ名を一括変更する方法

当ページのリンクの一部に広告が含まれています。
Excelのデータからフォルダ内のフォルダ名の一括変更するVBAマクロ

課題・悩み「特定のフォルダ内のすべてのフォルダ名を一括取得したい」

解決策「選択したフォルダ内のすべてのフォルダ名を一括取得してExcelに出力するVBAマクロ」を解説

「今あるフォルダに連番をつけたい」

既存のフォルダの名前のルールを変更するときなど、フォルダを一括変更したいときに、1つ1つのフォルダの名前を変更していくのは効率が悪いです。

そこで、Excelを使ってフォルダ名を一括変更するVBAマクロファイルを作成しました。

この記事では

【選択したフォルダ内のすべてのフォルダ名を一括取得してExcelに出力するVBAマクロ】を図解で解説しています。

VBAマクロファイルを配布中。

以下のボタンよりダウンロードしてください。

目次

フォルダ内のファイル名を一括取得・変更するVBAマクロファイルの使い方

フォルダ内のファイル名を一括取得・変更するVBAマクロファイルの使い方を解説します。

【フォルダ内のファイル名を一括取得・変更するVBAマクロ】の処理は、①フォルダ名の取得と②フォルダ名の変更の大きく2つにわかれます。

フォルダ内のファイル名を一括取得・変更するVBAマクロファイルの使い方

  • ①フォルダ名の取得
  • ②フォルダ名の変更

①フォルダ名の取得

【フォルダ名の取得】ボタンのクリック

選択したフォルダ内のすべてのフォルダ名を一括取得してExcelに出力するVBAマクロ①フォルダ名の取得【フォルダ名の取得】ボタンのクリックの画像

【フォルダ名の取得】のボタンをクリックします。

①フォルダ名の取得

  • 【フォルダ名の取得】ボタンのクリック
  • 一括変更したいフォルダを選択
  • フォルダ名の一覧の取得完了

一括変更したいフォルダを選択

選択したフォルダ内のすべてのフォルダ名を一括取得してExcelに出力するVBAマクロ一括変更したいフォルダを選択の画像

ダイアログでフォルダ名を取得したいフォルダを選択します。

フォルダ名の一覧の取得完了

選択したフォルダ内のすべてのフォルダ名を一括取得してExcelに出力するVBAマクロフォルダ名の一覧の取得完了の画像

B列にフォルダ名の一覧を取得できました。

②フォルダ名の変更

変更したいフォルダ名の入力

選択したフォルダ内のすべてのフォルダ名を一括取得してExcelに出力するVBAマクロ②フォルダ名の変更変更したいフォルダ名の入力の画像

C列に変更したいフォルダ名を入力します。

②フォルダ名の変更

  • 変更したいフォルダ名の入力
  • 【フォルダ名の変更】ボタンのクリック
  • フォルダ名の一括変更の完了

【フォルダ名の変更】ボタンのクリック

選択したフォルダ内のすべてのフォルダ名を一括取得してExcelに出力するVBAマクロ【フォルダ名の変更】ボタンのクリックの画像

【フォルダ名の変更】のボタンをクリックします。

フォルダ名の一括変更の完了

選択したフォルダ内のすべてのフォルダ名を一括取得してExcelに出力するVBAマクロフォルダ名の一括変更の完了の画像

フォルダ名の変更が完了しました。

フォルダ内のファイル名を一括取得・変更するVBAマクロのコードのQ&A

フォルダ内のフォルダ名を効率的に変更する方法は?

フォルダ内のフォルダ名を効率的に変更する方法は、①コマンドプロンプトを用いる方法とVBAマクロなどのプログラミングを用いる方法の2種類あります。 VBAを用いてフォルダ名を一括変更する方法と一括変更できるファイルは#フォルダ内のファイル名を一括取得・変更するVBAマクロファイルの使い方で解説・ダウンロードできます。

VBAを使って大量のフォルダ名を一括変更する方法は?

VBAを使って大量のフォルダ名を一括で変更する方法は、NameステートメントやMoveFolderメソッドを使う方法が挙げられます。 フォルダ名を一括で変更するVBAマクロのコードは、#フォルダ内のファイル名を一括取得・変更するVBAマクロファイルの使い方で解説しています。 また、ボタンをクリックするだけでフォルダ名を一括変更できるExcel配布もダウンロードできます。

フォルダ名を一括取得するVBAコードの解説

このコードは、ユーザーが選択したフォルダ内のすべてのサブフォルダ名を取得してExcelの特定のシートに出力するものです。

エクセルのSheet1のB3セルから下にサブフォルダ名が出力され、A1セルには選択したフォルダのパスが記載されます。

エラーハンドリングも実装されており、何か問題が発生した場合にはエラーメッセージが表示されます。

Option Explicit

Sub GetFolderNames()
    Dim fldr As FileDialog
    Dim strPath As String
    Dim folder As Object
    Dim subfolder As Object
    Dim fso As Object
    Dim ws As Worksheet

    On Error GoTo ErrorHandler ' エラーハンドリングの設定

    ' ファイルダイアログの作成
    Set fldr = Application.FileDialog(msoFileDialogFolderPicker)

    ' ダイアログの表示
    If fldr.Show <> -1 Then Exit Sub
    strPath = fldr.SelectedItems(1)

    ' 選択されたシートのB3から下のデータを削除
    Set ws = ThisWorkbook.Sheets("Sheet1")
    ws.Range("B3:B" & ws.Rows.Count).Clear

    ' FileSystemObjectの作成
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(strPath)

    ' 選択されたフォルダ内のすべてのサブフォルダ名を取得
    Dim row As Long: row = 3 ' 出力開始行
    For Each subfolder In folder.Subfolders
        ws.Cells(row, 2).Value = subfolder.Name ' B列にフォルダ名を出力
        row = row + 1
    Next subfolder

    ' ダイアログで選択したフォルダのパスをA1に出力
    ws.Cells(1, 1).Value = strPath

    MsgBox "完了しました" ' 処理が完了したらメッセージを表示

    Exit Sub ' 正常終了

ErrorHandler:
    MsgBox "エラーが発生しました" ' エラー時のメッセージ表示
End Sub

フォルダ名を一括取得するVBAコードの解説

  • コードの変更箇所

コードの変更箇所

出力シートの指定

出力先のシート名が異なる場合、シート名を変更する必要があります

Set ws = ThisWorkbook.Sheets("Sheet1")

コードの変更箇所

  • 出力シートの指定
  • 出力セルの開始位置
  • 出力先の列の指定

出力セルの開始位置

サブフォルダ名の出力開始位置を変更したい場合、開始行の値を変更します

row = 3

出力先の列の指定

サブフォルダ名の出力先列を変更する場合、列番号を変更します

ws.Cells(row, 2).Value = subfolder.Name

注意点

データが非常に大量の場合、サブフォルダ名の取得とExcelへの出力に時間がかかる可能性があります。

エラーハンドリングは一般的なエラーを捉えるためのもので、特定のエラーに対する詳細な処理は実装されていません。

環境設定

このコードはExcelのVBA (Visual Basic for Applications) で実行するもので、対象となるExcelファイルにマクロを有効にする必要があります。

セキュリティの設定によっては、マクロの実行が制限されている場合があるので、設定を確認して必要に応じて変更してください。

各処理

各処理

  • フォルダ選択ダイアログの表示
  • 選択したシートのクリア

フォルダ選択ダイアログの表示

ユーザーがフォルダを選択するためのダイアログを表示する

    ' ファイルダイアログの作成
    Set fldr = Application.FileDialog(msoFileDialogFolderPicker)

    ' ダイアログの表示
    If fldr.Show <> -1 Then Exit Sub
    strPath = fldr.SelectedItems(1)

選択したシートのクリア

選択されたシートのB3から下のデータを削除する

    ' 選択されたシートのB3から下のデータを削除
    Set ws = ThisWorkbook.Sheets("Sheet1")
    ws.Range("B3:B" & ws.Rows.Count).Clear

サブフォルダ名の取得

選択されたフォルダ内のサブフォルダ名を取得し、Excelに出力する

    ' FileSystemObjectの作成
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(strPath)

選択したフォルダパスの出力

選択したフォルダのパスをA1セルに出力する

    ' ダイアログで選択したフォルダのパスをA1に出力
    ws.Cells(1, 1).Value = strPath

完了メッセージの表示

処理が完了したらメッセージボックスで通知する

    MsgBox "完了しました" ' 処理が完了したらメッセージを表示

エラーハンドリング

エラーが発生した場合、エラーメッセージを表示する

ErrorHandler:
    MsgBox "エラーが発生しました" ' エラー時のメッセージ表示

フォルダ名を一括変更するVBAマクロのコード

Option Explicit

Sub フォルダ名の変更()
    On Error GoTo エラーハンドラ
    Dim ws As Worksheet
    Dim basePath As String
    Dim row As Long
    
    ' Sheet1を作業シートとして設定
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' A1セルから基本となるパスを取得
    basePath = ws.Cells(1, 1).Value
    
    ' B5セルから始めて、空白のセルが見つかるまでループ
    row = 5
    Do While ws.Cells(row, 2).Value <> ""
        Dim oldFolderName As String, newFolderName As String
        oldFolderName = basePath & "\" & ws.Cells(row, 2).Value
        newFolderName = basePath & "\" & ws.Cells(row, 3).Value
        
        ' 古いフォルダ名が存在する場合、新しい名前に変更
        If Dir(oldFolderName, vbDirectory) <> "" Then
            Name oldFolderName As newFolderName
        End If
        
        ' 次の行へ移動
        row = row + 1
    Loop
    
    ' 処理が完了したらメッセージを表示
    MsgBox "完了しました", vbInformation
    
    Exit Sub
    
エラーハンドラ:
    ' エラーが発生した場合の処理
    MsgBox "エラーが発生しました: " & Err.Description, vbExclamation
End Sub

フォルダ名を一括変更するVBAマクロのコード

  • コードの変更箇所
  • 注意点

コードの変更箇所

コードの変更箇所

  • 作業シートの指定
  • 基本パスのセル位置

作業シートの指定

作業するシートの名前が「Sheet1」でない場合、シート名に合わせて変更する必要があります。

Set ws = ThisWorkbook.Sheets("Sheet1")

基本パスのセル位置

基本パスがA1セルにない場合、該当するセルに変更する必要があります。

basePath = ws.Cells(1, 1).Value

旧フォルダ名の開始位置

旧フォルダ名がB5セルにない場合、該当するセルに変更する必要があります。

Do While ws.Cells(row, 2).Value <> ""

新フォルダ名の開始位置

新しいフォルダ名がC5セルにない場合、該当するセルに変更する必要があります。

newFolderName = basePath & "\" & ws.Cells(row, 3).Value

注意点

データが大量にある場合、フォルダ名の変更処理に時間がかかる可能性があります。

フォルダ名の変更に失敗すると、マクロはエラーを報告しますが、失敗した理由に応じて別途調査が必要です(例:アクセス権限の不足)。

環境設定

ExcelのVBAエディタでこのマクロを実行するためには、マクロの設定が有効になっている必要があります。

フォルダの名前を変更するために、対象となるフォルダへの適切なアクセス権限が必要です。

各コードの解説

各コードの解説

  • エラーハンドリング
  • 作業シートの設定

エラーハンドリング

エラーが発生した際に、エラーの詳細をメッセージボックスで表示します。

On Error GoTo エラーハンドラ

作業シートの設定

Sheet1を作業シートとして設定します。

    ' Sheet1を作業シートとして設定
    Set ws = ThisWorkbook.Sheets("Sheet1")

基本パスの取得

A1セルから基本パスを取得します。

    ' A1セルから基本となるパスを取得
    basePath = ws.Cells(1, 1).Value

フォルダ名の変更

B5セルから既存のフォルダ名を取得し、C5セルから新しい名前を取得して変更します。

    ' B5セルから始めて、空白のセルが見つかるまでループ
    row = 5
    Do While ws.Cells(row, 2).Value <> ""
        Dim oldFolderName As String, newFolderName As String
        oldFolderName = basePath & "\" & ws.Cells(row, 2).Value
        newFolderName = basePath & "\" & ws.Cells(row, 3).Value
        
        ' 古いフォルダ名が存在する場合、新しい名前に変更
        If Dir(oldFolderName, vbDirectory) <> "" Then
            Name oldFolderName As newFolderName
        End If

完了メッセージの表示

処理が完了したら「完了しました」というメッセージを表示します。

    ' 処理が完了したらメッセージを表示
    MsgBox "完了しました", vbInformation

まとめ:

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次