フォルダ内のフォルダ名の変更
課題・悩み「フォルダパスを直観的に取得したい」
解決策「フォルダ選択ダイアログから選んだフォルダのパスをシートに簡単に出力するVBAマクロ」を解説
Excelのマクロ機能を活用することで、多くの日常業務を自動化し、効率を大幅に向上させることができます。
特に、ファイルやフォルダを頻繁に扱う作業では、フォルダ選択ダイアログを介して必要なデータを瞬時に取得し、それをExcelシートに反映させることが多くのユーザーにとって非常に便利です。
この記事では、Excel VBAを使用してフォルダ選択ダイアログからフォルダのパスを取得し、特定のシートのセルに出力する方法を紹介します。
【フォルダ選択ダイアログから選んだフォルダのパスをシートに簡単に出力するVBAマクロ】を図解で解説しています。
VBAマクロファイルを配布中。
以下のボタンよりダウンロードしてください。
フォルダ内のフォルダ名の変更
フォルダ選択ダイアログから選んだフォルダのパスをシートに出力するVBAマクロのコード
このVBAマクロは、ユーザーがフォルダを選択するためのダイアログを表示し、選択されたフォルダのパスをExcelの「ThisWorkbook」の「Sheet1」のセル「A2」に出力します。
基本的には、フォルダ選択からパスの出力までを自動で行います。
Sub OutputFolderPath()
Dim fldr As FileDialog
Dim sPath As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "フォルダを選択してください"
.AllowMultiSelect = False
If .Show <> -1 Then Exit Sub ' ユーザーがキャンセルした場合は処理を中断
sPath = .SelectedItems(1) ' 選択されたフォルダのパス
End With
' 選択されたパスをThisWorkbookのSheet1のA2に出力
ThisWorkbook.Sheets("Sheet1").Range("A2").Value = sPath
End Sub
処理ごとの解説
フォルダ選択ダイアログの設定
FileDialogオブジェクトを使用してフォルダ選択ダイアログを設定し、ユーザーに表示します。
Dim fldr As FileDialog
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
ダイアログのタイトル設定
ダイアログのタイトルを「フォルダを選択してください」と設定します。
.Title = "フォルダを選択してください"
フォルダ選択の可否
フォルダの選択がキャンセルされた場合は処理を中断します。
If .Show <> -1 Then Exit Sub
フォルダパスの取得
ユーザーが選択したフォルダのパスを取得します。
sPath = .SelectedItems(1)
パスの出力
取得したフォルダパスをExcelの指定したセルに出力します。
ThisWorkbook.Sheets("Sheet1").Range("A2").Value = sPath
注意点
処理時間について
このマクロはフォルダの選択とパスの出力のみを行いますので、通常は処理に時間はかかりません。
しかし、Excelファイル自体に大量のデータが存在する場合、Excelの応答が遅くなることがあります。
操作の取り消しについて
VBAマクロで行われた操作は、一部を除いて元に戻すことができません。
特にセルの値を変更した場合、その操作を取り消すには手動で修正する必要があります。
必要な環境設定
マクロの設定
Excelでマクロを実行するには、セキュリティ設定でマクロの実行を許可する必要があります。
Excelのオプションから「セキュリティセンター」を開き、「マクロの設定」で「すべてのマクロを有効にする」を選択するか、「信頼できる場所」にファイルを保存してください。
環境によって変更が必要な箇所の解説
シート名の変更
Excelの「Sheet1」ではなく別のシートに出力したい場合は、シート名を変更します。
ThisWorkbook.Sheets("Sheet1")
もしデータを出力したいシートが「Sheet1」ではなく、「データシート」など別の名前である場合は、以下のように変更します。
ThisWorkbook.Sheets("データシート")
出力セルの変更
出力するセルがA2ではなく、別のセルにしたい場合は、セルの参照を変更します。
.Range("A2")
出力先のセルをA2から例えばB3に変更する場合は、以下のように変更します。
.Range("B3")
ダイアログのタイトルの変更
フォルダ選択ダイアログのタイトルを変更したい場合は、タイトル文字列を編集します。
.Title = "フォルダを選択してください"
コメント