Categories: Excel

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

Share
Published by
Office Guide
Tags: VBA

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago