VBA 폴 더 탐색 대화 상자 에서 호출 하 는 몇 가지 방법
'【    】 
Private Type BROWSEINFO 
hWndOwner As Long 
pIDLRoot As Long 
pszDisplayName As Long 
lpszTitle As Long 
ulFlags As Long 
lpfnCallback As Long 
lParam As Long 
iImage As Long 
End Type 
'【API  】 
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _ 
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _ 
ByVal pszPath As String) As Long 
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _ 
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long 
Private Declare Function lstrcat Lib "kernel32" _ 
Alias "lstrcatA" (ByVal lpString1 As String, _ 
ByVal lpString2 As String) As Long 
Private Declare Function OleInitialize Lib "ole32.dll" _ 
(lp As Any) As Long 
Private Declare Sub OleUninitialize Lib "ole32" () 
Private Const BIF_USENEWUI = &H40 
Private Const MAX_PATH = 260 
'【     】 
Public Function GetFolder_API(sTitle As String, Optional vFlags As Variant) As String 
Dim lpIDList As Long 
Dim sBuffer As String 
Dim BInfo As BROWSEINFO 
If IsMissing(vFlags) Then vFlags = BIF_USENEWUI 
Call OleInitialize(ByVal 0&) 
With BInfo 
.lpszTitle = lstrcat(sTitle, "") 
.ulFlags = vFlags 
End With 
lpIDList = SHBrowseForFolder(BInfo) 
If (lpIDList) Then 
sBuffer = Space(MAX_PATH) 
SHGetPathFromIDList lpIDList, sBuffer 
sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1) 
If sBuffer <> "" Then GetFolder_API = sBuffer 
End If 
Call OleUninitialize 
End Function 
'【    】 
Sub Test() 
MsgBox GetFolder_API("     ") 
End Sub
Sub GetFloder_Shell() 
Set objShell = CreateObject("Shell.Application") 
Set objFolder = objShell.BrowseForFolder(0, "     ", 0, 0) 
If Not objFolder Is Nothing Then 
MsgBox objFolder.self.path 
End If 
Set objFolder = Nothing 
Set objShell = Nothing 
End Sub 
Sub GetFloder_FileDialog() 
Dim fd As FileDialog 
Set fd = Application.FileDialog(msoFileDialogFolderPicker) 
If fd.Show = -1 Then MsgBox fd.SelectedItems(1) 
Set fd = Nothing 
End Sub 
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Excel VBA에서 SIR 모델을 구현합니다.신형 코로나 바이러스(COVID-19)의 환자수 추이를 나타내는 수리 모델 「SIR 모델」을 자주(잘) 보게 되었습니다. SIR 모델에서는 감염되지 않은 사람을 S(susceptible), 감염자를 I(infecti...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.