【VBA初學者教程】- 第一章 VBA入門知識:花式打開工作簿
前一期為大家介紹了如何創建新的工作簿,今天為大家介紹如何打開工作簿。
在VBE宏編輯器裡面打開工作簿,需要使用Open方法,新建一個xlsm工作簿,插入一個新的模塊,輸入如下代碼,即可打開一個工作簿。Sub OpenWorkbook()n Workbooks.Open ("C:UsersStevenDesktopTest1.xlsx") 打開指定工作簿n MsgBox ActiveWorkbook.Name 顯示打開工作簿名稱nEnd Subn
詳細演示如下:
通過如上代碼的演示,在複製完代碼到模塊1後,按下鍵盤上的F5鍵即可執行OpenWorkbook過程,該宏執行完畢後,Excel自動打開名稱為Test1.xlsx的工作簿,並且打開的工作簿會成為活動工作簿,也就是被激活了。
雖然通過前面的代碼可以快速打開工作簿,但如果想對打開的工作簿進行多項操作就沒那麼方便了,只能通過ActiveWorkbook進行操作。有沒有辦法在打開工作簿後很方便的操作工作簿呢?其實可以把打開的工作簿賦值給一個對象變數,這樣使用對象變數就可以很容易地操作工作簿了。
Sub OpenWB()n Dim wBook As Workbook 定義工作簿變數n Set wBook = Workbooks.Open("C:UsersStevenDesktopTest2.xlsx", Password:="123456") 打開帶打開密碼的指定工作簿n wBook.Sheets(1).Range("A1") = "SUT事務所" 設置打開的工作簿中的第一個工作表A1單元格值n wBook.Save 保存工作簿n wBook.Close 關閉工作簿n Set wBook = NothingnEnd Subn
其實上面的代碼很好理解,先定義一個工作簿變數,再把打開的工作簿對象賦值給wBook,然後再設置打開的工作簿中第一個工作表的A1內容,最後保存、關閉和清空對象。詳細的演示如下:
因為工作簿Test2.xlsx有打開密碼,密碼為123456,在打開工作簿的時候,需要把密碼一併帶上,否則運行宏代碼的時候,還會提示輸入密碼對話框。
有些時候,需要同時打開多個指定的工作簿,可以通過如下的代碼即可批量打開,代碼如下:
Sub OpenWorkbooks()n On Error Resume Nextn Dim SelectFiles As Variantn 顯示打開文件對話框n SelectFiles = Application.GetOpenFilename("Excel 文件 (*.xl*)," & "*.xl*", , "打開", , True)n 未選擇n If TypeName(SelectFiles) = "Boolean" Thenn Exit Subn End Ifn 打開所選工作簿n For i = 1 To UBound(SelectFiles)n Workbooks.Open SelectFiles(i)n 可以把多個工作簿合併到一個工作簿n ......n Next inEnd Subn
上面的VBA代碼先用Application.GetOpenFilename方法顯示「打開」文件對話框,然後打開所選擇的一個或多個Excel工作簿文件。詳細的演示如下:
看過如上的動態圖,可能有的小夥伴就要說了,如果我需要選擇的工作簿有很多,而且都不連續,難道需要按住Ctrl鍵一個一個選擇嗎?能不能把需要打開的工作簿文件放入一個文件夾,然後批量打開,然後進行處理呢?當然是可以的,具體代碼如下:
Sub OpenWBs()nn Dim wb As Workbook 定義變數 wb 為 工作簿n Dim Path$, File$ 定義變數 Path$,File$n Application.DisplayAlerts = False 關閉警告信息顯示n Application.ScreenUpdating = False 關閉屏幕刷新(可以提高運行速度)n With Application.FileDialog(msoFileDialogFolderPicker) 工作於 應用程序的FileDialog(msoFileDialogFolderPicker)n .Show <With對象>的Shownn If .SelectedItems.Count = 0 Thenn Exit Sub 未選擇文件夾n End Ifnn Path = .SelectedItems(1) 路徑=<With對象>的SelectedItems(1)n File = Dir(Path & "*.xl*") File=<查找文件或目錄>(路徑 & "*.xl*")n Do While File <> "" 執行循環操作 當條件 File 不等於 空值n Workbooks.Open (Path & "" & File) 設定wb= 工作簿集合的Open(路徑 & "" & File)n File = Dir File=下一個文件n Loop 循環執行n End With With語句結束n Application.ScreenUpdating = True 開啟屏幕刷新n Application.DisplayAlerts = True 開啟警告信息顯示nEnd Subn
詳細演示如下:
如上動態圖為大家演示了,如何批量打開指定目錄Test中的所有工作簿文件,其實在Do While循環中可以加入自己的代碼,把打開的工作簿中的工作表全部匯總到一個工作簿中,具體如何實現就當作業吧。
今天的介紹就到這裡了,更多VBA初學者教程,請關注下期圖文教程。本文素材可以在公眾號回復「20170606」得到哦~後期文章附帶的素材,大家都可以通過在公眾號回復該文檔發送的日期得到,歡迎下載學習^_^Written by Steven in 20170606^_^
微信公眾號:SaveUTime
SUT學習交流群:615356012,入群審核人:Steven
關注公眾號,提高效率,節約您的時間!
推薦閱讀:
※Excel+VBA製作小遊戲:俄羅斯方塊
※百萬次實驗告訴你,堅持到底不一定勝利!
※Excel+VBA製作小遊戲:翻卡牌
※九九乘法表?三行就夠了!
※vba自動生成PPT報告?