2016/07/26

【VBA】直前に開いたディレクトリをデフォルトルートとして表示する

VBAでマクロを書くときに、ボタンをクリックするとディレクトリ選択のダイアログを表示することがよくある。
でもApplication.FileDialogを使っているとWindowsのように直前に開いた、または選択したディレクトリが表示されず、Excelファイルがあるディレクトリがルートになってしまう。

そこでダイアログ表示時に直前に開いたディレクトリをデフォルトルートにする方法をまとめる。


直前に開いたディレクトリをデフォルトルートにする



Option Explicit

' 最後に開いたディレクトリ(グローバル変数)
Dim LastDirectory As Variant

Sub ボタン1_Click()
    Dim path As String
    path = OpenFolderDialog(LastDirectory)
    
    If Trim(path) <> "" Then
        LastDirectory = path
    End If
    
End Sub

'フォルダパスの選択
Function OpenFolderDialog(Optional ByVal lastPath As String) As String
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "フォルダ選択"
        .AllowMultiSelect = False
        
        If Trim(lastPath) = "" Then
            .InitialFileName = ThisWorkbook.path
        Else
            .InitialFileName = lastPath
        End If
             
    
        '選択された場合
        If .Show = -1 Then
            OpenFolderDialog = .SelectedItems.Item(1)
        Else
            OpenFolderDialog = vbNullString
        End If
    End With

End Function


やっていることは簡単で、フォルダが選択された場合にグローバル変数として定義したLastDirectoryにパスを設定する。
あとは、ダイアログを表示するときにFileDaialog.InitialFileNameLastDirectoryを設定するだけ。


以上

written by @bc_rikko

0 件のコメント :

コメントを投稿