前景提要
在之前,我們學(xué)習(xí)了如果通過對話框的形式來打開文件的方法,這種方法的好處就是兩個字:靈活,我們不用在代碼中強(qiáng)制指定并需要在某個文件夾中操作,也不用和其他的使用者多次強(qiáng)調(diào)文件的命名格式等方面的要求,代碼的兼容性和通用性一下子就提高了很多,因?yàn)樯弦淮沃饕歉嬖V大家如何通過VBA代碼調(diào)出這個對話框的,一些細(xì)節(jié)的問題還沒有來得及和大家分享,今天我們就繼續(xù)來完善下上一次的代碼,讓腳本運(yùn)行起來更加的人性化。
思路
對話框,顧名思義就是用戶(代碼編寫者)和電腦之間的一個交互,我們告訴電腦我們需要作用,電腦收到我們的信息之后,就去執(zhí)行對應(yīng)的操作,但是僅僅調(diào)用window本身自帶的對話框,似乎顯得非常的不友好,來看看我們上一節(jié)的對話框窗體
對話框的標(biāo)題:游覽,游覽什么?不是應(yīng)該選擇更加合適嘛?或者我想要更加人性化的提示,請選擇指定的文件之類的,還有為什么我每次調(diào)用對話框窗體都固定在一個位置,這樣我比較方便選擇我想要的文件,比方說我想要固定在D盤,這樣更加方便。。。
不要急,這一次我們就來分享下,如果解決上面的這些問題,讓我們的窗體看起來更加的友好
還是按照我們一貫的風(fēng)格,只展示本屆知識點(diǎn)相關(guān)的代碼,這樣的好處就是方便大家能夠清楚明白的看到知識點(diǎn)相關(guān)的代碼,也方便大家后面的調(diào)試和操作。
上代碼+代碼解析
1,設(shè)置默認(rèn)路徑(D:\工作文件夾)
Sub test()
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = "D:\工作文件夾"'指定默認(rèn)路徑
If .Show = -1 Then
For x = 1 To .SelectedItems.Count
Debug.Print .SelectedItems(x)
Next x
Else
MsgBox "您未作出任何選擇,程序結(jié)束!"
Exit Sub
End If
End With
End Sub
效果如圖:

2.設(shè)置對話框標(biāo)題
Sub test()
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = "D:\工作文件夾" '指定默認(rèn)路徑
.Title = "我是對話框標(biāo)題,請看這里!"
If .Show = -1 Then
For x = 1 To .SelectedItems.Count
Debug.Print .SelectedItems(x)
Next x
Else
MsgBox "您未作出任何選擇,程序結(jié)束!"
Exit Sub
End If
End With
End Sub
效果圖如下:

3.是否允許多選(這里設(shè)置的是不允許,如果需要的話,可以改為True就可以了)
Sub test()
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = "D:\工作文件夾" '指定默認(rèn)路徑
.Title = "我是對話框標(biāo)題,請看這里!" '窗體標(biāo)題
.AllowMultiSelect = False '是否允許多選
If .Show = -1 Then
For x = 1 To .SelectedItems.Count
Debug.Print .SelectedItems(x)
Next x
Else
MsgBox "您未作出任何選擇,程序結(jié)束!"
Exit Sub
End If
End With
End Sub
4.設(shè)置對話框默認(rèn)打開的文件
Sub test()
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = "D:\工作文件夾" '指定默認(rèn)路徑
.Title = "我是對話框標(biāo)題,請看這里!" '窗體標(biāo)題
.AllowMultiSelect = False '是否允許多選
.Filters.Clear '清除文件過濾器
.Filters.Add "Excel Files", "*.xls;*.xls" '設(shè)置打開文件的類型
If .Show = -1 Then
For x = 1 To .SelectedItems.Count
Debug.Print .SelectedItems(x)
Next x
Else
MsgBox "您未作出任何選擇,程序結(jié)束!"
Exit Sub
End If
End With
End Sub
效果圖如下:
