VBA 開啟檔案 | 檔案視窗選擇/開啟檔案

VBA_select_file

有些 VBA 程式,需要讓使用者選擇電腦中的文件或是檔案,由於不容易記憶檔案路徑,通常都會呼叫”檔案視窗”(file dialog),讓使用者利用滑鼠點選檔案。本文說明 VBA 開啟檔案方法,呼叫 Application.GetOpenFilename 方法,開啟檔案視窗,讓使用者以圖形化的方式選擇檔案。

語法說明

Application.GetOpenFilename( FileFilter, FilterIndex, Title, ButtonText, MultiSelect )

備註: 所有引數皆為選填引數

  • FileFilter:指定檔案視窗要顯示的文件類型。如果只要顯示 Excel 檔案,可以輸入“Excel Files (.xls), xls”,檔案視窗只會顯示 Excel 檔案
  • FilterIndex:當 FileFilter 輸入 2 種類型以上的文件,可以指定預設的文件類型。預設值為 1
  • Title:檔案視窗的標題
  • ButtonText:此引數僅適用麥金塔
  • MultiSelect:如果要允許選擇多個文件,輸入 TRUE;反之為 FALSE。引數預設值為 FALSE

範例說明

範例 1 | 不輸入任何引數,直接開啟檔案視窗

Application.GetOpenFilename 方法的所有引數都是選填。因此,我們可以不輸入任何引數,直接開啟檔案視窗。這是最簡單的使用方式

Sub open_file_example_1()
    Dim FileName As String
    Dim WB2 As Workbook
          
    FileName = Application.GetOpenFilename
    If FileName <> "False" Then
        Set WB2 = Workbooks.Open(FileName)
    End If
End Sub
行數說明
2因為 GetOpenFilename 方法會回傳檔案路徑,因此宣告 FileName 變數,儲存檔案路徑
3宣告工作簿變數,開啟的 Excel 檔案輸入至變數
5使用 Application.GetOpenFilename 方法,輸入檔案路徑至變數 FileName
6使用者如果取消選擇檔案,會回傳”False”。使用 IF 判斷式,確認使用者已選取檔案,再開啟檔案
7利用 Workbook.Open 方法讀取檔案路徑,開啟新工作簿,輸入變數 WB2

執行本範例的程式碼,會顯示如下的檔案視窗:

GetOpenFilename_no_arguments

範例 2 | 指定選擇 Excel 檔案

以下範例,我們指定使用者選擇 Excel 檔案。我們在 FileFilter 引數中輸入“Excel Files (*.xls*), *xls*”

Sub open_file_example_2()
    Dim FileName As String
    Dim WB2 As Workbook
          
    FileName = Application.GetOpenFilename("Excel Files (*.xls*), *xls*")
    If FileName <> "False" Then
        Set WB2 = Workbooks.Open(FileName)
    End If
End Sub
行數說明
2因為 GetOpenFilename 方法會回傳檔案路徑,因此宣告 FileName 變數,儲存檔案路徑
3宣告工作簿變數,開啟的 Excel 檔案輸入至變數
5FileFileter 引數輸入 “Excel Files (*.xls*), *xls*”
6使用者如果取消選擇檔案,會回傳”False”。使用 IF 判斷式,確認使用者已選取檔案,再開啟檔案
7利用 Workbook.Open 方法讀取檔案路徑,開啟新工作簿,輸入變數 WB2

執行本範例的程式碼,會看到檔案視窗只有顯示 Excel 檔案

GetOpenFilename_FileFilter_Excel

範例 3 | 調整檔案視窗的標題

以下範例,我們調整檔案視窗的標題,標題改為:請選擇 Excel 檔案

Sub open_file_example_3()
    Dim FileName As String
    Dim WB2 As Workbook
          
    FileName = Application.GetOpenFilename("Excel Files (*.xls*), *xls*", , "請選擇 Excel 檔案")
    If FileName <> "False" Then
        Set WB2 = Workbooks.Open(FileName)
    End If
End Sub
行數說明
2因為 GetOpenFilename 方法會回傳檔案路徑,因此宣告 FileName 變數,儲存檔案路徑
3宣告工作簿變數,開啟的 Excel 檔案輸入至變數
5FileFileter 引數輸入 “Excel Files (*.xls*), *xls*” ;Title 引數輸入“請選擇 Excel 檔案”
6使用者如果取消選擇檔案,會回傳”False”。使用 IF 判斷式,確認使用者已選取檔案,再開啟檔案
7利用 Workbook.Open 方法讀取檔案路徑,開啟新工作簿,輸入變數 WB2

執行本範例的程式碼,檔案視窗的標題已經被修改

GetOpenFilename_Title

如果本篇文章有幫助到你,請在下方拍手圖示按 5 下。只要花幾秒鐘登入 Google 或 FB 帳號,不需任何花費就能提供我實質的回饋,支持我繼續創作,謝謝

發表迴響