No.1VBA程式設計中有這樣一種情景,就是當我們選擇開啟一個檔案後,並不打算進行編輯,也就是說根本不想開啟這個檔案,而只是通過"開啟檔案"對話方塊來傳遞這個檔案的地址和檔名。
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---
相關文章
No.1VBA程式設計中有這樣一種情景,就是當我們選擇開啟一個檔案後,並不打算進行編輯,也就是說根本不想開啟這個檔案,而只是通過"開啟檔案"對話方塊來傳遞這個檔案的地址和檔名。
2021-06-10 10:23:32
【手機中國導購】隨著全國各個地區高考落下帷幕,許多「芊芊學子」走出高考考場的第一件事情就是考慮如何選購一款「利器」,來滿足自己高中三年都沒實現的「手機自由權」。同時
2021-06-10 10:23:20
近日,蘋果如期在Apple Park園區舉行了2021年度的WWDC開發者大會。按照慣例,依舊是介紹OS全家桶的升級功能,包括iOS、iPadOS、WatchOS、tvOS以及macOS,未釋出任何硬體新品。其中,
2021-06-10 10:22:14
索泰PGF系列顯示卡定位在旗艦級市場,每一代NVIDIA的旗艦和次旗艦GPU都會出現在索泰的PGF系列顯示卡中。RTX 3080 Ti定位是RTX 30系列的次旗艦,自然不會缺席RTX 3080 Ti顯示卡
2021-06-10 10:21:31
還有不到一週的時間,大家就可以看到榮耀50系列的正式來襲了,而且隨著釋出時間的臨近,關於榮耀50系列的曝光資訊也就變得越來越清晰了。因為作為榮耀獨立並重組產業鏈後的首款全
2021-06-10 10:21:03
IT之家 6 月 10 日訊息 據 @Redmi 手機 官微訊息,開售僅 9 天,Redmi Note 10 系列國內銷量突破 100 萬臺。Redmi Note 10 系列於 5 月 26 日釋出,包括 Redmi Note 10 與 Redmi
2021-06-10 10:20:52