首頁 > 科技

如何獲取開啟或儲存檔案地址和檔名,VBA程式設計

2021-06-10 10:23:32

No.1

VBA程式設計中有這樣一種情景,就是當我們選擇開啟一個檔案後,並不打算進行編輯,也就是說根本不想開啟這個檔案,而只是通過"開啟檔案"對話方塊來傳遞這個檔案的地址和檔名。

怎麼辦呢?VBA給出了一個方法,可以方便地通過這個方法實現獲取檔案地址和名稱。

如下圖所示,GetOpenFilename方法可實現上述功能。

此檔案是Application物件之下使用,使用方法:

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

參數說明可以參考下圖:

如果,在開啟對話方塊中沒有單擊確定按鈕,也就是沒有選擇任何檔案,單擊了取消按鈕的時候,GetOpenFilename方法返回False。

根據返回值,就可以對程式過程進行一個判斷,是傳遞檔名還是進行其它操作。

下圖為另一個方法,實現儲存檔名返回。

語法:Application.GetSaveAsFilename (InitialFilename, FileFilter, FilterIndex, Title, ButtonText)

獲取使用者檔名,而不儲存任何檔案。

感覺這兩個方法都有些欺騙性,也不知道為什麼這麼做。

不管怎麼著,只要理解在什麼場景下可以使用達到目的就行了。

下圖為例進行說明

三個按鈕,一個開啟檔案,一個儲存檔案,一個清除記錄。

每開啟一個檔案就記錄一條,每儲存一個檔案就記錄一條,其實都沒有執行真正的操作。

清除記錄可把記錄的內容刪除。

看下程式碼就明白了。

No.2

Private Sub CommandButton1_Click()Dim O As Variant'定義變數O = Application.GetOpenFilename’返回值If O <> False Then‘如果不是False就執行工作表記錄過程WriteValue O, Me.CommandButton1.CaptionElseMsgBox "沒有選擇檔案!"End IfEnd Sub

Private Sub WriteValue(O As Variant, Cname As String)Dim cell As Range, ir As IntegerSet cell = ActiveSheet.Range("B3")ir = ActiveSheet.Cells(ActiveSheet.Cells.Rows.Count, cell.Column).End(xlUp).Row + 1With ActiveSheet.Cells(ir, cell.Column).Value = "=row()-3".Offset(0, 1).Value = O.Offset(0, 2).Value = CnameEnd WithEnd Sub

以上程式碼實現對工作表進行記錄,記錄內容為開啟或儲存工作表的地址和檔名。

呼叫系統標準對話方塊有幾種方法,前面文章裡有過介紹,如Dialog物件,就是Microsoft Excel 中的所有內建對話方塊集合,有興趣可以參考學習。

歡迎關注、收藏

---END---


IT145.com E-mail:sddin#qq.com