VBA 的文件浏览器






4.79/5 (17投票s)
Excel 演示如何在 Office 应用程序中构建文件浏览器。

引言
这里是一个在 Office 应用程序中构建常用文件浏览器的示例。我不会解释所有使用的 Windows API 函数,因为这对于这篇文章来说太长了。我为 Excel 制作了这个程序,但你可以在所有支持 VBA 的应用程序中使用它。当你打开 Excel 文件并在 VBViewer (ALT+F11) 中查看整个项目时,你会看到主要工作是由名为 FileBrowser
的模块完成的。你可以导出它并将其导入到另一个项目。
代码说明
Declare Function th_apiGetOpenFileName Lib "comdlg32.dll"
Alias "GetOpenFileNameA" (OFN As thOPENFILENAME) As Boolean
Declare Function th_apiGetSaveFileName Lib "comdlg32.dll"
Alias "GetSaveFileNameA" (OFN As thOPENFILENAME) As Boolean
Declare Function CommDlgExtendetError Lib "commdlg32.dll" () As Long
GetOpenFileName
的功能是构建此界面的关键。有关这些函数的详细信息,请参阅 API 指南。注意:OFN
是允许你浏览文件的容器。
Function StartIt()
Dim strFilter As String
Dim lngFlags As Long
strFilter = thAddFilterItem(strFilter, "Excel Files (*.xls)", "*.XLS")
strFilter = thAddFilterItem(strFilter, "Text Files(*.txt)", "*.TXT")
strFilter = thAddFilterItem(strFilter, "All Files (*.*)", "*.*")
Startform.filenameinput.Value = thCommonFileOpenSave(InitialDir:=
"C:\Windows", Filter:=strFilter, FilterIndex:=3, Flags:=lngFlags,
DialogTitle:="File Browser")
Debug.Print Hex(lngFlags)
End Function
这是主函数。thAddFilterItems
显示在下拉菜单中,用于选择不同的文件类型。如果你想添加其他项目,例如 Word 文件 (*.doc),复制并粘贴该行并填写你想要的内容。重要的是 InitialDir
,它指定开始浏览的路径。函数 thCommonFileOpenSave
控制对话框,并返回一个包含所选文件的 string
。这个 string
被传递给 Startform
的文本框 filenameinput
。因此,现在你有了控制权,可以在用户选择的窗体中处理文件。函数 thCommonFileOpenSave
看上去很复杂,但大多数时候它只是设置 OFN
对象的属性。
If OpenFile Then fResult = th_apiGetOpenFileName(OFN)
Else fResult = th_apiGetSaveFileName(OFN)
If fResult Then
If Not IsMissing(Flags) Then Flags = OFN.Flags
thCommonFileOpenSave = TrimNull(OFN.strFile)
Else
thCommonFileOpenSave = vbNullString
End If
这是函数 thCommonFileOpenSave
的重要部分。第一行决定你想要保存或打开文件,并调用所需的函数。if
块语句定义了函数的返回值。它返回 OFN.strFile
,它等于所选文件的名称,或者一个 null
字符串。函数 TrimNull
只是清除 Nullchars
。
我希望模块的其余代码清晰易懂,但请不要问我关于十六进制值设置的问题。我在 API 指南中找到了它,我不知道它具体做什么。另外,请不要批评我的糟糕英语。我是一名物理学学生,而不是语言天才。祝你玩得开心。
历史
- 2001年10月14日:初始发布
- 2008年10月3日:更新下载文件