オフィス・ブール ロゴ
【レスキュー連絡先】
代表 : 末永 尚登
TEL: 070-4087-0025 FAX:095-893-6090

【 VBAパーツ 】

2.フォルダを参照

フォルダを参照する方法はいろいろあると思いますが、よく利用する例として次の2つを挙げておきます。
一つ目はShell.Applicationを使ってBrowseForFolderを利用する方法、 二つ目はApplication.FileDialogを使って、ダイアログボックスを表示する方法です。両者で表示されるダイアログボックスは異なります。
前者はデスクトップそのものを選択すると、ObjPath.items.Item.Pathがエラーになるので、それを回避するためのコードを最後に追加しています。
後者はフォルダが選択されると、Application.FileDialog(msoFileDialogFolderPicker).Showが-1になるので、 そのときに選択されたフォルダパスを取得します。

Public Sub RefFolder_1()

    Dim WSH As Object
    Dim ObjPath As Object
    Dim strGuide As String
    Dim FolderPath As String
    
    
    strGuide = "フォルダを選択してください。"
    Set WSH = CreateObject("Shell.Application")
    Set ObjPath = WSH.BrowseForFolder(0, strGuide, 0)
    
    If Not ObjPath Is Nothing Then
        On Error GoTo ERR_JUMP
        FolderPath = ObjPath.items.Item.Path
        On Error GoTo 0
        MsgBox FolderPath
    Else
        MsgBox "キャンセルされました。"
    End If
    
    Exit Sub
ERR_JUMP:
    Err.Clear
    FolderPath = CreateObject("Wscript.shell").SpecialFolders("Desktop")
    MsgBox FolderPath
    
End Sub
Public Sub RefFolder_2()

    Dim FolderPath As String
    
    
    Application.FileDialog(msoFileDialogFolderPicker).Title = "フォルダを選択してください"
    Application.FileDialog(msoFileDialogFolderPicker).InitialFileName = "C:\"
    If Application.FileDialog(msoFileDialogFolderPicker).Show = -1 Then
        FolderPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
        MsgBox FolderPath
    Else
        MsgBox "キャンセルされました。"
    End If
 
End Sub


 


オフィス・ブール ロゴ 所在地:長崎県長崎市  代表:末永尚登
E-mail: suenaga@officeboole.com   TEL: 070-4087-0025  FAX: 095-893-6090