でも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.InitialFileNameにLastDirectoryを設定するだけ。
以上
written by @bc_rikko
0 件のコメント :
コメントを投稿