VBA VB6实现类似Excel打开浏览文件夹对话框,类似WindowsAPICodePack及Application.FileDialog
第三方库filedlg.tlb可以实现多选文件夹、单选文件夹、多选文件,单选文件。
VB6默认文件夹对话框是以下样式,老式
这种浏览文件夹对话框的缺点是,不能直接修改部分路径,不能直接粘贴路径访问,不能预览。
使用这个第三方库filedlg.tlb,可以解决以上问题,支持选择文件夹、文件类型。
下载这个filedlg.tlb文件
http://u3v.cn/5MPCGw
把文件放到一个比较短的文件夹路径中
打开VB6—自行新建项目—工程—引用
Excel VBA中也可以引用
点击浏览
文件类型拉下,选择所有文件。
找到filedlg.tlb选中,点击打开
确保 Common File Dialog 0.0 Type Library勾选状态,确定
部分示例代码,单选文件夹代码
Dim fod As New FileOpenDialog
Dim si As IShellItem
Dim dlgr As DlgResult
Dim pathl&, paths$
fod.Options = FOS_PICKFOLDERS Or FOS_FILEMUSTEXIST
dlgr = fod.Show(Me.hWnd)
Select Case dlgr
Case dlgsOkay
Set si = fod.Result
pathl = si.DisplayName(SIGDN_FILESYSPATH)
paths = SysAllocString(pathl)
CoTaskMemFree pathl
Print "选择了:"; paths
Case dlgeCancelled
Print "选择了取消!"
Case Else
Print "错误:"; Hex$(dlgr)
End Select
VBA多选文件夹:
Dim fod As New FileOpenDialog
Dim si As IShellItem
Dim sis As IShellItemArray
Dim dlgr As DlgResult
Dim pathl&, paths$, I&
fod.Options = FOS_PICKFOLDERS Or FOS_FILEMUSTEXIST Or FOS_ALLOWMULTISELECT
dlgr = fod.Show()
Select Case dlgr
Case dlgsOkay
Set sis = fod.Results
For I = 0& To sis.Count - 1&
Set si = sis.ItemAt(I)
pathl = si.DisplayName(SIGDN_FILESYSPATH)
paths = SysAllocString(pathl)
CoTaskMemFree pathl
Debug.Print "选择" & I & ":"; paths
Next
Case dlgeCancelled
Debug.Print "选择了取消!"
Case Else
Debug.Print "错误:"; Hex$(dlgr)
End Select