如何在vba中实现目录浏览对话框
2007-05-31 18:25
323 查看
有时执行vba程序时,会需要让用户选择目录,下面的代码可以实现目录浏览对话框。
Private Type BrowseInfo
hOwner As Long
pIDLRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Private Const BIF_RETURNONLYFSDIRS = &H1
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 Function DialogSelectFolder(hOwner As Long, psTitle As String) As String
Dim udtBrowseInfo As BrowseInfo, sPath As String
With udtBrowseInfo
.hOwner = hOwner
.pIDLRoot = 0&
.lpszTitle = psTitle
.ulFlags = BIF_RETURNONLYFSDIRS
End With
sPath = Space$(512)
If SHGetPathFromIDList(SHBrowseForFolder(udtBrowseInfo), sPath) Then
DialogSelectFolder = Left(sPath, InStr(sPath, vbNullChar) - 1)
Else
DialogSelectFolder = ""
End If
End Function
Sub btnFolder_Click()
DialogSelectFolder 0, "请选择目录"
End Sub
Powered by ScribeFire.
Private Type BrowseInfo
hOwner As Long
pIDLRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Private Const BIF_RETURNONLYFSDIRS = &H1
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 Function DialogSelectFolder(hOwner As Long, psTitle As String) As String
Dim udtBrowseInfo As BrowseInfo, sPath As String
With udtBrowseInfo
.hOwner = hOwner
.pIDLRoot = 0&
.lpszTitle = psTitle
.ulFlags = BIF_RETURNONLYFSDIRS
End With
sPath = Space$(512)
If SHGetPathFromIDList(SHBrowseForFolder(udtBrowseInfo), sPath) Then
DialogSelectFolder = Left(sPath, InStr(sPath, vbNullChar) - 1)
Else
DialogSelectFolder = ""
End If
End Function
Sub btnFolder_Click()
DialogSelectFolder 0, "请选择目录"
End Sub
Powered by ScribeFire.
相关文章推荐
- 如何实现访问apache时的目录浏览功能(apache file list view)
- 启用Nginx目录浏览功能如何实现
- 小问题综合 如何实现将文件从一个文件夹复制到另一个文件夹、字符串单斜杠转为双斜杠、浏览文件对话框
- VC实现在浏览目录对话框中选择目录
- C++如何实现驱动目录浏览呢
- 如何打开磁盘目录对话框(BrowseForFolder)
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- linux下,如何迁移mysql数据库存放目录。利用软连接简单快捷实现移动到home数据盘下
- 如何实现某一目录的forms身份验证
- 如何实现控件随对话框大小变化而自动调整大小和位置
- 如何实现“程序正在运行,请等待” VBA
- linux系统如何实现只备份某个目录下新产生的文件
- 如何使用redis缓存来实现用户最近浏览的商品列表
- web.config如何禁止文件夹目录浏览
- 如何弹出QQ临时对话框实现不添加好友在线交谈效果
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- 按下Ctrl弹出一个对话框松开关闭此对话框,如何实现?
- lnmp如何实现伪静态,默认目录伪静态
- select目录树如何实现?