在本文中,将探讨如何在Office应用程序中创建一个通用的文件浏览器。虽然将以Excel为例,但所介绍的方法同样适用于所有支持VBA的应用程序。当打开Excel文件并在VBViewer(快捷键ALT+F11)中查看整个项目时,会发现主要工作是由名为FileBrowser的模块完成的。可以将这个模块导出并导入到其他项目中。
将使用VBScript声明一些Windows API函数,这些函数对于构建文件浏览器界面至关重要。由于篇幅限制,不会详细解释所有使用的Windows API函数。以下是一些关键的API函数声明:
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
这是主要函数StartIt。thAddFilterItems显示在下拉菜单中,用于选择不同的文件类型。如果想添加其他项目,例如Word文件(*.doc),复制并粘贴该行并填写喜欢的内容。重要的是InitialDir,它给出了开始的路径。函数thCommonFileOpenSave控制对话框并返回一个字符串,包含选定的文件。这个字符串被赋予Startform的textbox 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
End If