コントロールを使わない方法です。
Option Explicit
Type BROWSEINFO
hwndOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As String
iImage As Long
End Type
Const BIF_BROWSEFORCOMPUTER = 1
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpbi As BROWSEINFO) As Long
Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHFree Lib "shell32" Alias "#195" (ByVal pidl As Long) As Long
Sub test()
Dim udtBROWSEINFO As BROWSEINFO
Dim lngFolder As Long
Dim strPathname As String
With udtBROWSEINFO
.hwndOwner = FindWindow("XLMAIN", vbNullString)
.lpszTitle = "フォルダを選択してください..."
.ulFlags = BIF_BROWSEFORCOMPUTER
End With
strPathname = String$(256, vbNullChar)
lngFolder = SHBrowseForFolder(udtBROWSEINFO)
SHGetPathFromIDList lngFolder, strPathname
SHFree lngFolder
MsgBox strPathname
End Sub
お礼
すばらしいです。 感動して声をあげて喜んでしまいました。 そっくりそのままで、出来てしまいました。 自分の勉強不足のため、ちょっと難しくてコードの意味は よく分からないのが、残念です。 本当にありがとうございました。