• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

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 檔案
選擇 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

分類:Excel 標籤:VBA

讀者互動方式

留言

  1. Scott 表示:

    2022-10-1110:36:32

    您好:
    不好意思,想要請教一下如下 想要以 檔案對話方塊(FileDialog)來取代 自行定義公式的參照到,要如何改才會讓它work呢?

    自行定義公式之名稱為:GFTT
    自行定義公式之參照到為: =files(“路徑名稱”),例如: =files(“D:\APP\*.jpg”)
    程式碼:

    Sub 按鈕1_Click()
    Application.FileDialog(msoFileDialogFolderPicker).Show
    sPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
    sFile = (sPath & “\*.jpg”)
    ActiveWorkbook.Names.Add Name:=”GFTT”, RefersToR1C1:= _
    “=FILES(“”sFile””)”
    ActiveWorkbook.Names(“GFTT”).Comment = “”
    Range(“A1:CL1”).Select

    Selection.FormulaArray = “=GFTT”
    End Sub

    感恩!!

    回覆

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • hashcat 密碼雜湊快速破解工具使用教學與範例
  • macOS 使用 GPGTools 與 GPG Mail 對郵件加密、解密、簽章、驗證教學與範例
  • wrk:HTTP 網頁伺服器效能測試工具使用教學
  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide