dialogs打開對話框選定文件夾,getopenfilename獲取文件名


如果需要使用“打開”、“打印”等Excel內置對話框已經具有的功能,可以使用代碼直接調用這些內置的對話框,如下面的代碼所示。

#001  Sub DialogOpen()

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

#003  End Sub

代碼解析:

DialogOpen過程顯示內置的“打開”對話框並選定示例所在的文件夾。

顯示內置對話框語法如下:

Application.Dialogs(xlDialogConst).Show

Dialogs集合代表所有的內置對話框,每個Dialog對象代表一個內置對話框,不能新建內置對話框或向該集合中添加內置對話框。

參數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開始。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM