工作中常會需要在多個工作簿中進行數據讀寫,這樣在VBA代碼中就會涉及幾個工作簿之間的切換,将工作簿切換到激活狀态,代碼的編寫也簡潔,明了些。(當然你的代碼也可每次都寫明操作的哪個工作簿與工作表)
工作簿有與工作表類似的激活語句:Workbooks(工作簿名稱).Activate,工作簿名稱要含工作簿文件的後綴名的。Workbooks(工作簿索引号).Activate,工作簿索引号是指工作簿打開的順序,Excel根據工作簿打開的順序以1開始進行編号。Workbooks(工作簿索引号) 這個用法實用性低,工作表的索引順序一眼可以看出來,工作簿索引易受手動打開的EXCEL文件影響。
實用性用法:Set WB = Workbooks.Open(文件全名),Open 裡必須是全路徑 文件名。對每一個工作簿打開時,賦值于一個變量,需要用此工作簿時,WB.Activate;wb1.Activate這樣代碼更清晰。附:有些Excel文件帶有“引用鍊接”,打開後會彈出是否要更新的提示(如下圖),影響代碼的運行。用 DisplayAlerts = False 是不能屏蔽這種更新提示的,必須是Workbooks.Open(文件全名,UpdateLinks:=0),UpdateLinks參數 0,為不更新;1 更新外部引用,不更新遠程引用 ;2 更新遠程引用,不更新外部引用; 3 更新外部引用,更新遠程引用
對于在不同SUB過程間要用到的工作簿,可以申明為模塊級變量,可以在同模塊的不同SUB中直接使用。如圖:
對于不同模塊的Sub過程調用工作簿,這種用法就隻能傳參。
Workbooks(工作簿名稱).Activate 的用法是可以跨SUB子過程的。
Application.Goto 也有同樣激活工作簿的功能,并且不會将指定的工作簿顯示到打開文件的最前面來。具體用法:Application.Goto Workbooks(工作簿名稱).Sheets(1).[A1] ,必須指定到具體單元格。
在打開的工作簿中找到含某關鍵字的工作簿代碼
Dim wb As Workbook,s As String
For Each wb In Workbooks 'Workbooks 已打開的工作簿的集合
s = wb.Name
If s Like "關鍵字*" Then
Workbooks(s).Activate
Exit For
End If
Next wb
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!