若是須要使用「打開」、「打印」等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所示。
若是隻但願獲取用戶在顯示的內置 「打開」對話框中選定文件的文件名,而不想真正打開該文件,那麼可使用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開始。