1. 程式人生 > 電腦技巧 >Excel VBA 檔案目錄選擇對話框使用教學與範例

Excel VBA 檔案目錄選擇對話框使用教學與範例

介紹如何使用 VBA 的 Application.FileDialog 建立檔案或目錄選擇對話框,讓使用者以滑鼠選擇檔案或目錄。


在 VBA 巨集程式中,有時候會需要讓使用者選擇電腦中的檔案或目錄,由於一般的路徑都很長,不太可能讓使用者輸入路徑,正常來說都會以檔案選擇對話方塊的介面,讓使用者直接用滑鼠點選,以下將介紹如何使用 VBA 的 Application.FileDialog 建立圖形介面(GUI)的檔案或目錄選擇對話框。

選擇單一檔案

Application.FileDialog 可用來建立選擇檔案的視窗,以下是一個簡單的範例:

' 建立 Application.FileDialog 物件

Dim fDialog As FileDialog

Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

' 顯示對話方塊,若傳回 -1 表示有成功選擇檔案

If fDialog.Show = -1 Then

' 顯示選擇的檔案

MsgBox fDialog.SelectedItems(1)

End If在建立 fDialog 這個對話方塊物件之後,呼叫它的 Show 函數即可在螢幕上顯示檔案選擇的視窗,如果使用者正常選擇了一個檔案之後,Show 就會傳回 -1,我們可以藉此判斷使用者有沒有選擇檔案(或是取消),若有選擇檔案的話,就可以從 SelectedItems中取出選擇檔案的路徑。

選擇單一檔案執行後所產生的視窗會像這樣:

選擇單一檔案當使用者選擇檔案之後,在程式中即可取得類似這樣完整的檔案路徑。

檔案路徑

進階屬性

Application.FileDialog 的視窗有許多進階屬性可以調整,例如選擇多檔案、視窗標題、初始目錄與檔案類型等,以下是自訂屬性的範例:

Dim fDialog As FileDialog

Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

' 允許選擇多檔案

fDialog.AllowMultiSelect = True

' 視窗標題

fDialog.Title = "請選擇 Excel 檔案"

' 初始目錄

fDialog.InitialFileName = "C:"

' 設定檔案類型

fDialog.Filters.Clear

fDialog.Filters.Add "Excel 檔案", "*.xlsx"

fDialog.Filters.Add "所有檔案", "*.*"

If fDialog.Show = -1 Then

' 逐一處理每個檔案

For Each file In fDialog.SelectedItems

MsgBox file

Next file

End If這個範例允許使用者同時選擇多個檔案,同時透過 Filters 的方式,讓使用者在選擇檔案時可以依照副檔名過濾檔案,產生的視窗會像這樣:

選擇 Excel 檔案

選擇目錄

在使用 Application.FileDialog 建立視窗物件時,會傳入一個參數指定視窗類型,其可用的參數如下:

參數值說明msoFileDialogOpen開啟舊檔msoFileDialogSaveAs儲存檔案msoFileDialogFilePicker瀏覽並選擇檔案msoFileDialogFolderPicker瀏覽並選擇目錄若需要選擇目錄,則可改用 msoFileDialogFolderPicker:

Dim fDialog As FileDialog

' 建立選擇目錄的對話方塊

Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)

If fDialog.Show = -1 Then

' 顯示選擇的目錄

MsgBox fDialog.SelectedItems(1)

End If這樣產生的視窗就會自動把普通檔案隱藏起來,只顯示目錄讓使用者更容易選擇。

選擇目錄

儲存檔案

將 Application.FileDialog 的參數改為 msoFileDialogSaveAs 即可產生儲存檔案專用的檔案選擇對話方塊,程式的語法都相同:

' 建立儲存檔案的對話方塊

Set fDialog = Application.FileDialog(msoFileDialogSaveAs)

If fDialog.Show = -1 Then

MsgBox fDialog.SelectedItems(1)

End If這樣產生出來的檔案選擇對話方塊,除了文字標示稍微不同之外,也會有檔案取代確認的功能。

檔案取代確認功能參考資料:AnalystCave