之前寫過兩篇VBA常用方法了,傳送門:
VBA-單元格對象及常用方法匯總
VBA-工作表對象及常用方法匯總
這期寫到工作薄相關的方法了
這裡講的工作簿其實就是指我們平時看見的.xlsx/.xlsx格式的Excel文檔
MsgBox "活動工作簿名字為:" & ActiveWorkbook.NameActiveWorkbook 代表的是當前激活(打開最前端)的文檔。
當前運行代碼的工作薄
MsgBox "運行代碼的工作簿名字為:" & ThisWorkbook.Name我們在一個工作薄上寫代碼,但是激活的可能並非原工作簿,因此可以用ThisWorkbook 指回正運行代碼的工作薄。
新建、保存工作簿
Workbooks.Add '新建空白工作簿並激活ActiveWorkbook.password = "123" '設置工作簿的查看密碼為「123」ActiveWorkbook.SaveAs Filename:="D:\桌面\myfile.xlsx" '保存到桌面並重命名為myfileSaveChanges參數為False為不保存直接關閉,True為保存並關閉。
打開、關閉工作薄
Workbooks.Open("D:\桌面\myfile.xlsx") '打開桌面的myfile工作薄ActiveWindow.Close SaveChanges:=False '關閉當前活動工作薄
工作薄循環
工作薄的批處理我之前單獨開過一篇了,傳送門:
你還在一個一個打開文檔?讓VBA幫你一次搞定吧
代碼:
Sub test()Dim myPath$, f$, Wb As WorkbookmyPath = ThisWorkbook.Path & "\"f = Dir(myPath & "*.xls*")On Error Resume Next Do While f <> "" If f <> ThisWorkbook.Name Then Set Wb = Workbooks.Open(myPath & f, UpdateLinks:=0) '打開工作簿後在每個工作簿要做的事情 '關閉本工作簿 Wb.Close False End If f = Dir LoopSet Wb = Nothing'-循環完工作簿後要做的事情''-結束End Sub
不打開工作薄讀取其他工作薄數據
這個代碼是在Excel論壇抄的,作者yuanzhuping
使用GetObject函數來獲取對指定的Excel工作表的引用:
Sub CopyData_1()Dim Temp As StringTemp = "'" & ThisWorkbook.Path & "\[數據表.xls]Sheet1'!"With Sheet1.Range("A1:F22").FormulaR1C1 = "=" & Temp & "RC".Value = .ValueEnd WithEnd Sub代碼解析:
CopyData_2過程使用GetObject函數來獲取「數據表」工作簿中的數據。
第4行代碼關閉屏幕更新加快運行速度。
第5行代碼將引用工作簿的路徑賦給變量Temp。
第6行代碼使用Set語句將GetObject函數返回的對象賦給對象變量Wb。
GetObject函數返回文件中的ActiveX對象的引用,語法如下:
GetObject([pathname] [,class])
參數pathname是可選的,包含待檢索對象的文件的全路徑和名稱。如果省略,則class參數是必需的。
參數class是可選的,代表該對象的類的字符串。
Class參數的格式為appname.objecttype,語法的各個部分如下
部分
描述
appname
必需的,提供該對象的應用程式名稱。
objecttype
必需的,待創建對象的類型或類。
第7行到第10行代碼,當GetObject函數指定的對象被激活之後,就可以在代碼中使用對象變量Wb來訪問這個對象的屬性和方法。其中第7、8行代碼將「數據表」工作簿中的第1張工作表已使用區域的數據賦給本工作表的單元格,第9行代碼關閉「數據表」工作簿,使用GetObject函數返回對象的引用時,雖然在窗口中看不到對象的實例,但實際上是打開的,所以需用Close語句將其關閉。
第12行代碼開啟屏幕更新。
工作薄層面平時使用比較多的就是打開、關閉、保存以及工作簿循環了,一般工作使用的話,也想不到別的情景了,如果有你覺得需要用的情景,歡迎在下方留言區留言~
VBA入門篇:
1.如何錄製宏、新建工作表、更改表名、單元格賦值
膠水代碼初體驗(1/2)
2.如何建立循環
膠水代碼初體驗(2/2)
3.如何建立判斷;如何動態獲取最後一行:
震驚!判斷語句竟如此簡單!
4.如何用VBA進行篩選
就是這麼簡單系列——VBA篩選
5.如何進行工作表批處理-工作表循環
初步接觸工作表批處理——VBA表間循環
6.解放你的雙手-工作簿循環
你還在一個一個打開文檔?讓VBA幫你一次搞定吧
覺得文章對你有幫助,就點一下右下角的在看吧~謝謝你的支持