博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转载】VBA:调用文件夹对话框的几种方法
阅读量:6863 次
发布时间:2019-06-26

本文共 1897 字,大约阅读时间需要 6 分钟。

一、使用API方法 

'【类型声明】Private Type BROWSEINFOhWndOwner As LongpIDLRoot As LongpszDisplayName As LonglpszTitle As LongulFlags As LonglpfnCallback As LonglParam As LongiImage As LongEnd Type'【API声明】Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _ByVal pszPath As String) As LongPrivate Declare Function SHBrowseForFolder Lib "shell32.dll" _Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As LongPrivate Declare Function lstrcat Lib "kernel32" _Alias "lstrcatA" (ByVal lpString1 As String, _ByVal lpString2 As String) As LongPrivate Declare Function OleInitialize Lib "ole32.dll" _(lp As Any) As LongPrivate Declare Sub OleUninitialize Lib "ole32" ()Private Const BIF_USENEWUI = &H40Private Const MAX_PATH = 260'【自定义函数】Public Function GetFolder_API(sTitle As String, Optional vFlags As Variant) As StringDim lpIDList As LongDim sBuffer As StringDim BInfo As BROWSEINFOIf IsMissing(vFlags) Then vFlags = BIF_USENEWUICall OleInitialize(ByVal 0&)With BInfo.lpszTitle = lstrcat(sTitle, "").ulFlags = vFlagsEnd WithlpIDList = SHBrowseForFolder(BInfo)If (lpIDList) ThensBuffer = Space(MAX_PATH)SHGetPathFromIDList lpIDList, sBuffersBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)If sBuffer <> "" Then GetFolder_API = sBufferEnd IfCall OleUninitializeEnd Function'【使用方法】Sub Test()MsgBox GetFolder_API("选择文件夹")End Sub

 

二、Shell.Application方法

Sub GetFloder_Shell()Set objShell = CreateObject("Shell.Application")Set objFolder = objShell.BrowseForFolder(0, "选择文件夹", 0, 0)If Not objFolder Is Nothing ThenMsgBox objFolder.self.pathEnd IfSet objFolder = NothingSet objShell = NothingEnd Sub

 

三、使用FileDialog方法

Sub GetFloder_FileDialog()Dim fd As FileDialogSet fd = Application.FileDialog(msoFileDialogFolderPicker)If fd.Show = -1 Then MsgBox fd.SelectedItems(1)Set fd = NothingEnd Sub

 

转载于:https://www.cnblogs.com/yl153/articles/6727195.html

你可能感兴趣的文章
京东老刘和他的商城
查看>>
MySQL 故障集锦
查看>>
rmdir删除文件报Permission denied in 错误
查看>>
开发php扩展
查看>>
Backtrack的安装配置
查看>>
Linux CPU信息
查看>>
[李景山php]每天TP5-20170131|thinkphp5-Request.php-3
查看>>
HttpClient第一章(一)
查看>>
关于SDC沙盒源代码加密
查看>>
ognl(1)
查看>>
Hyper-V 3 虚拟机快照之四 导入/导出快照
查看>>
[李景山php]每天laravel-20161027|FileLoader.php
查看>>
block的一些注意事项
查看>>
求最大值及其下标
查看>>
基于thinkphp的省略图便捷函数
查看>>
[EULAR文摘] 肢端MRI能否在未分化关节患者中甄别出RA患者
查看>>
php redis安装使用
查看>>
Android Tips
查看>>
Run Android on Your Netbook or Desktop
查看>>
单片机的几种存储器
查看>>