[转]VBA代码调用浏览文件夹对话框的几种方法
来源:互联网 发布:跑跑卡丁车有mac版吗 编辑:程序博客网 时间:2024/05/17 23:05
1、使用API方法 '【类型声明】 2、使用Shell.Application方法 Sub GetFloder_Shell() Set objShell = CreateObject("Shell.Application") End Sub 3、使用FileDialog方法 Sub GetFloder_FileDialog() 以上方法在WINXP+OFFICE2003中测试通过 ---------------------------------------------------------------------------------------------------------- URL:http://www.officexy.com/Articles/office/VBABasic/20061026103436069.htm
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
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
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show = -1 Then MsgBox fd.SelectedItems(1)
Set fd = Nothing
End Sub
- [转]VBA代码调用浏览文件夹对话框的几种方法
- vba 浏览文件夹对话框
- js调用Windows的浏览文件夹对话框
- 浏览文件夹对话框代码段
- Excel VBA VBA去重复的几种方法
- VBA 读写文本文件的几种方法
- vba 字符串换行的几种方法
- WPF中使用文件浏览对话框的几种方式
- WPF中使用文件浏览对话框的几种方式
- WPF中使用文件浏览对话框的几种方式
- Delphi中调用SelectDirectory弹出的浏览文件夹的对话框为何总是在右下角
- EXCEL-VBA:调用打开文件夹对话框,选择路径
- VBA文件对话框的应用(VBA打开文件、VBA选择文件、VBA选择文件夹)
- VBA文件对话框的应用(VBA打开文件、VBA选择文件、VBA选择文件夹)
- 在线浏览的几种方法
- 【转】用C#获取浏览文件夹对话框
- "浏览文件夹"选择对话框
- 文件夹浏览对话框类
- NHibernate2.0配置技巧
- mac ox系统的驱动安装常规操作
- 用IO完成端口提高读写速度的探讨试验
- Eclipse中cvs的使用介绍
- Python and Django 001 MySQL
- [转]VBA代码调用浏览文件夹对话框的几种方法
- tomcat启动过程:main(String args[])总览
- 神舟OSCAR数据库.Net Data Provider开发
- 好用的javascript方法
- 利用SpiderMonkey进行嵌入式开发——学习总结
- Hibernate中配置C3P0连接池
- 找不到符号
- 快与慢
- 共鸣的声音,加油到底!