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

【Excel VBA】フォルダ選択ダイアログからパスを出力する方法

当ページのリンクの一部に広告が含まれています。

課題・悩み「フォルダパスを直観的に取得したい」

解決策「フォルダ選択ダイアログから選んだフォルダのパスをシートに簡単に出力する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 = "フォルダを選択してください"
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次