ダイアログでフォルダを指定

ページ番号: 1 2 3

【環境】Windows 10 Pro 64bit、Excel for Office 365

広告

それでは早速?Excelシートに張り付けた「参照」ボタンを押下して、フォルダ参照のダイアログボックスを表示するプログラムを書いていきましょう!

※『その1:仕様』は、以下のリンクを確認してください

■フォルダ参照ダイアログボックスを呼び出す関数

ファイルを参照するダイアログボックスの開き方はいくつかあるようなのですが、フォルダを参照する方法はこれしか知りませんw

FileDialog オブジェクトのフォルダピッカーを指定して、フォルダ参照ダイアログボックスを呼び出す関数を作成していきます

Function UseFileDialogFolderPicker() As String
    Dim ret As String
    ret = "" 
    ' Create a FileDialog object as a Folder Picker dialog box. 
    With Application.FileDialog(msoFileDialogFolderPicker)
        ' Display paths of each file selected
        If (.Show = -1) Then
            ' The user pressed the button. 
            ret = Trim(.SelectedItems(1))
        Else
            ' The user pressed Cancel. 
        End If
    End With 
    UseFileDialogFolderPicker = ret
End Function

コメントはMicrosoftのサンプルを頂きましたw

【参考】https://docs.microsoft.com/ja-jp/office/vba/api/office.filedialog

簡単に解説します

  • 5行目:フォルダピッカーのオブジェクトを宣言します
  • 7行目:フォルダピッカーを開いて、アクションボタンが押された場合(キャンセルじゃなかったら)
  • 8行目:選択されたアイテムの1つ目を取得します
  • 14行目:関数の戻り値として返します
広告

■FileDialogオブジェクト

FileDialogオブジェクトのメンバーでフォルダ参照ダイアログボックスをカスタマイズできる項目を挙げておきます

恐らくはこの3つのプロパティくらいですね

  • ButtonName:アクションボタンに表示する文字列を 取得または 設定
  • InitialFileName:最初に表示されるパスを 取得または 設定
  • Title:ダイアログボックスのタイトルを取得または設定

これらのプロパティを使って書き換えてみます

Function UseFileDialogFolderPicker() As String
    Dim ret As String
    ret = "" 
    ' Create a FileDialog object as a Folder Picker dialog box. 
    With Application.FileDialog(msoFileDialogFolderPicker)
        .ButtonName = "OK"
        .InitialFileName = "C:"
        .Title = "選択"
        ' Display paths of each file selected
        If (.Show = -1) Then
            ' The user pressed the button. 
            ret = Trim(.SelectedItems(1))
        Else
            ' The user pressed Cancel. 
        End If
    End With 
    UseFileDialogFolderPicker = ret
End Function

注意すべき点は、「宣言~Showまでの間で使用する」くらいですかね?

フォルダ参照は複数選択できないので、SelectedItems(1)で良いです

もちろん、エラートラップも必要かも知れませんが、ま、特に起きそうもないので、無くても良いかとw

汎用的な使い方をする場合は、これらのプロパティを引数に持つというのも良いかも知れません

その場合は、「InitialFileName」が存在するパスかどうかをチェックしないとエラーが発生する恐れがありますね!

ページ番号: 1 2 3
広告

やもす ʕ•͡-•ʔ

のんびり!のほほん!がモットーです!w 蕎麦食いたい ライブ行きたい 暑いの嫌い

シェアする