dialogs打开对话框选定文件夹,getopenfilename获取文件名

若是须要使用“打开”、“打印”等Excel内置对话框已经具备的功能,可使用代码直接调用这些内置的对话框,以下面的代码所示。express

#001  Sub DialogOpen()数组

#002      Application.Dialogs(xlDialogOpen).Show arg1:=ThisWorkbook.Path & "\*.xls"字体

#003  End Subspa

代码解析:orm

DialogOpen过程显示内置的“打开”对话框并选定示例所在的文件夹。对象

显示内置对话框语法以下:索引

Application.Dialogs(xlDialogConst).Show图片

Dialogs集合表明全部的内置对话框,每一个Dialog对象表明一个内置对话框,不能新建内置对话框或向该集合中添加内置对话框。ci

参数xlDialogConst是内置对话框的内置常量,每一个常量都以“xlDialog”开头,其后是对话框的名称,如“打开”对话框的常量为“xlDialogOpen”。经常使用内置对话框的内置常量如表格 77‑1所示。字符串

常量

说明

xlDialogActiveCellFont

476

单元格格式(字体)

xlDialogBorder

45

单元格格式(边框)

xlDialogCellProtection

46

单元格格式(保护)

xlDialogDeleteFormat

111

单元格格式(数字)

xlDialogFormatNumber

42

单元格格式(数字)

xlDialogPatterns

84

单元格格式(图案)

xlDialogClear

52

清除

xlDialogColumnWidth

47

列宽

xlDialogRowHeight

127

行高

xlDialogConditionalFormatting

583

条件格式

xlDialogDefineName

61

定义名称

xlDialogDefineStyle

229

样式

xlDialogDisplay

27

显示选项

xlDialogFont

26

字体

xlDialogSetBackgroundPicture

509

工做表背景

xlDialogInsert

55

插入

xlDialogInsertHyperlink

596

插入超连接

xlDialogInsertPicture

342

插入图片

xlDialogNew

119

新建工做簿

xlDialogOpen

1

打开

xlDialogSaveAs

5

另存为

xlDialogWorkbookCopy

283

移动或复制工做表(创建副本)

xlDialogWorkbookInsert

354

插入工做表

xlDialogWorkbookMove

282

移动或复制工做表

xlDialogWorkbookName

386

重命名工做表

xlDialogWorkbookNew

302

新建工做表

xlDialogWorkbookProtect

417

保护工做簿

xlDialogPageSetup

7

页面设置

xlDialogPrint

8

打印内容

xlDialogPrinterSetup

9

打印机设置

xlDialogPrintPreview

222

打印预览

xlDialogSetPrintTitles

23

设置打印标题

xlDialogRun

17

xlDialogTable

41

模拟运算表

xlDialogSendMail

189

发送邮件

表格 77‑1       内置对话框的内置常量

显示内置对话框使用Show方法,应用于Dialog对象的Show方法语法以下:

expression.Show(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30)

参数expression是必需的,返回Dialog对象之一。

参数arg1到参数arg30是可选的,仅应用于内置对话框,是命令的初始参数。若要查找要设置的参数,请在内置对话框参数列表中查找对应的对话框常量。

运行alogOpen过程,显示内置的“打开”对话框,而且直接选定示例所在的文件夹,如图 77‑1所示。

 

 

1-1 获取选定文件的文件名

若是只但愿获取用户在显示的内置 “打开”对话框中选定文件的文件名,而不想真正打开该文件,那么可使用GetOpenFilename方法,以下面的代码所示。

#001  Sub OpenFilename()

#002      Dim Filename As Variant

#003      Dim mymsg As Integer

#004      Dim i As Integer

#005      Filename = Application.GetOpenFilename(Title:="删除文件", MultiSelect:=True)

#006      If IsArray(Filename) Then

#007          mymsg = MsgBox("是否删除所选文件?", vbYesNo, "提示")

#008          If mymsg = vbYes Then

#009              For i = 1 To UBound(Filename)

#010                  Kill Filename(i)

#011              Next

#012          End If

#013      End If

#014  End Sub

代码解析:

OpenFilename过程使用GetOpenFilename方法显示标准的内置“打开”对话框,获取用户选定文件的文件名后使用Kill语句删除。

GetOpenFilename方法显示标准的内置“打开”对话框,获取文件名,语法以下:

expression.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)

参数expression是必需的,返回一个Application对象。

参数FileFilter是可选的,指定文件筛选条件的字符串。若是省略,则默认参数值为“全部文件(*.*)”。

参数FilterIndex是可选的,指定默认文件筛选条件的索引号,取值范围为 1 到由 FileFilter 所指定的筛选条件数目。若是省略,或者取值大于可用筛选数目,则采用第一个文件筛选条件。

参数Title是可选的,指定对话框的标题。若是省略,则使用“打开”做为标题。

参数ButtonText是可选的,仅用于Macintosh。

参数MultiSelect是可选的,若是该值为True,则容许选定多个文件名,若是该值为False,则只容许选定单个文件名。默认值为False。

第5行代码显示标准的“打开”对话框,将对话框的标题设置为“删除文件”,将MultiSelect参数设置为True,容许选定多个文件。

第6行代码,得到返回值。当用户选定文件后,返回的是选定的文件名或用户输入的文件名。由于MultiSelect参数已设置为True,因此返回值将是一个包含全部选定文件名的数组(即便仅选定了一个文件名)。若是用户取消了对话框,则该值为False。

第8行到第12行代码,经询问用户后使用Kill语句从磁盘中删除用户选定的文件。

运行OpenFilename过程,显示标准的内置“打开”对话框,删除用户选定的文件,如所图 77‑2示。

 

图 77‑2   获取用户选定文件的文件名

注意 VBA中数组下界默认从0开始,但使用GetOpenFilename方法选择多个文件时返回的包含选定文件名的数组下界是从1开始。

相关文章
相关标签/搜索