按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
使用FileDialogFilters集合的Add方法,你可以轻易地将你自己的过滤器添加到缺省的过滤器中
去。下面修改后代工程ListFilters2示范了如何将临时文件(*。tmp)过滤器添加到过滤器清单中
去。该过程里的最后语句将打开文件打开对话框,因此你自己可以检查自定义的过滤器是否已经被
添加到了文件类型下拉列表框里。
Sub ListFilters2()
Dim fdfs As FileDialogFilters
Dim filt As FileDialogFilter
Dim c As Integer
Set fdfs = Application。FileDialog(msoFileDialogOpen)。Filters
Sheets(3)。Cells(1; 1)。Select
Selection。Formula = 〃List of Default Filters〃
With fdfs
185
… 页面 202…
c = unt
For Each filt In fdfs
Selection。Offset(1; 0)。Formula = filt。Description & _
〃: 〃 & filt。Extensions
Selection。Offset(1; 0)。Select
Next
MsgBox c & 〃 filters were written to Sheet3。〃
。Add 〃Temporary Files〃; 〃*。tmp〃; 1
c = unt
MsgBox 〃There are now 〃 & c & 〃 filters。〃 & vbCrLf _
& 〃Check for yourself。〃
Application。FileDialog(msoFileDialogOpen)。Show
End With
End Sub
你可以使用FileDialogFilters集合的Clear方法清除所有预设的过滤器。修改一下上面的过程,在
添加自定义的临时文件(*。tmp)过滤器之前,清除内置的过滤器。
当你从文件打开对话框里选择一个文件时,该被选择的文件名称和路径就会被放置在
FileDialogSelectedItems集合里。使用SelectedItems属性可以返回FileDialogSelectedItems集
合。通过设定FileDialog对象的AllowMultiSelect属性为True,用户就可以同时按下Shift键或者
Ctrl键和文件名称,选择一个或多个文件。
接下来的过程示范了如何使用上面提及的属性,该过程打开一个新的工作簿并且插入一个列表框控
件。允许用户选择一个以上的文件,然后被选择的文件将加入到该列表框控件里,并且加亮第一个
文件名。
Sub ListSelectedFiles()
Dim fd As FileDialog
Dim myFile As Variant
Dim lbox As Object
Set fd = Application。FileDialog(msoFileDialogOpen)
With fd
。AllowMultiSelect = True
If 。Show Then
Workbooks。Add
Set lbox = Worksheets(1)。Shapes。 _
AddFormControl(xlListBox; _
Left:=20; Top:=60; Height:=40; Width:=300)
lboxntrolFormat。MultiSelect = xlNone
For Each myFile In 。SelectedItems
lboxntrolFormat。AddItem myFile
Next
Range(〃B4〃)。Formula = _
〃You've selected the following 〃 & _
lboxntrolFormat。ListCount & 〃 files:〃
lboxntrolFormat。ListIndex = 1
End If
End With
End Sub
186
… 页面 203…
图10…6 使用过程ListSelectedFiles(见上面)将用户选择的文件添加到工作表中列表框控件中去
注意,Show方法不会将用户所选的文件打开,它仅仅显示文件打开对话框。当用户点击“打开”按
钮时,文件名称通过SelectedItems属性从SelectedItems集合里获得。如果你希望用户点击“打开”
按钮时立即执行文件的打开操作的话,你就应该使用FileDialog对象的Execute方法。下面的过程
示范了如何立即打开用户选择的文件:
Sub OpenRightAway()
Dim fd As FileDialog
Dim myFile As Variant
Set fd = Application。FileDialog(msoFileDialogOpen)
With fd
。AllowMultiSelect = True
If 。Show Then
For Each myFile In 。SelectedItems
。Execute
Next
End If
End With
End Sub
2。GetOpenFilename 和 GetSaveAsFilename 方法
从多年以前开始,Excel就给程序员们提供了两种方便的VBA方法来显示文件另存为和文件打开对话
框:GetOpenFilename和 GetSaveAsFilename。这些方法只有在Excel里可用,并且在Excel2002里
面如果需要向后兼容的话仍然可用。
GetOpenFilename方法显示“打开”对话框,在那里你可以选择要打开的文件名称,第二个方法
(GetSaveAsFilename)则显示另存为对话框。
1。 在立即窗口输入下面的指令:
Application。GetOpenFilename
Application。GetSaveAsFilename
Application。GetSaveAsFilename (〃Plan2。xls〃)
GetOpenFilename方法从用户处获得文件名称,而不必实际打开某特定的文件。该方法有四个可选
的参数,经常使用的是第一和第三个参数,显示入下表:
187
… 页面 204…
GetOpenFilename参数 描述
fileFilter 该参数决定了对话框的文件类型(译者:原文为Save as type,有误)
下拉框了的内容。例如,要在文件类型下拉框里显示“Excel
Files(*。xls)”的话,你就应该输入下列文本作为fileFilter: “Excel
Files(*。xls); *。xls”(译者:“Excel Files; *。xls”也一样。)过
滤器的前面部分(逗号前)决定文件类型下拉框要显示的文本,第二部
分(逗号后)明确你要显示的那种类型的文件。确保你按照表格里的例
子试验一下。
title 这是对话框的标题,如果忽略,对话框将显示标题为“打开”
在立即窗口里输入下列语句(确保在一行输入),来看看这些参数是如何使用的:
Application。GetOpenFilename(〃Excel Files(*。xls); *。xls〃);;〃Highlight the File〃
GetOpenFilename方法返回所选的或者指定的文件名称,该名称之后可以在你的VBA过程里用来打开
该文件,例如:
yourFile = Application。GetOpenFilename
?yourFile
C:EXCELMark。xls
Workbooks。Open Filename:=yourFile
在上面的例子里,文件名称被赋予变量yourFile,接下来的两条输入为询问文件名称(?yourFile)
和显示该名称(C:EXCELMark。xls)。第四条语句打开变量yourFile明确的文件。如果你通过点击
Esc键或者对话框上的取消按钮来取消对话框的话,那么GetOpenFilename方法就会返回False。
GetSaveAsFilename方法返回文件名和路径,然而,它不会自动地保存该特定的文件。输入下述指
令提供文件名称:
Application。GetSaveAsFilename (〃Plan2。xls〃)
如果你忽略文件名称的话,Excel就会显示当前活动文件的名称。当你使用GetSaveAsFilename方法
时,你可以明确文件过滤器和对话框自定义标题:
yourFile = Application。GetSaveAsFilename(“Plan2。xls”; 〃Excel Files(*。xls);
*。xls〃;;〃Name your file〃)
要显示另存为对话框的话,就要将GetSaveAsFilename方法的结果赋予一个变量,如上所示。
3。创建窗体
尽管内置的对话框很方便使用,但是它并不能满足你所有的VBA应用程序的要求。除了将对话框显
示在屏幕上和初始化它的设置之外,你不能控制对话框的外观,你不能决定增加哪个按钮,删除哪
个按钮,而哪个又移动,同样,你不能改变内置对话框的大小。如果你想用提供一个自定义的界面
的话,那么你的唯一办法就是创建一个用户窗体。
用户窗体看上去就像一个自定义对话框,你可以在上面添加各种各样的控件,给这些控件设置属性
以及编写对窗体反应的VBA过程和控制事件。窗体是单独的对象,你可以在VB编辑器菜单里选择“插
入”|“用户窗体”来添加窗体。
窗体可以在不同的应用程序之间分享使用,例如,你可以在Word或者任何其它使用VB编辑器的应用
程序里面,重新使用Excel里设计的窗体。
按照下述步骤创建自定义窗体:
* 切换到VB编辑器窗口
* 选择“插入”|“用户窗体”
一个叫做窗体的文件夹显示在工程浏览器窗口,该文件夹包含一个空白用户窗体。工作区域自动显
示窗体和带有添加控件的工