雖然我前面講過,在VBA中操作工作薄并不是件明智的事,但有些時候,還是避免不了要這么做。絕大多數(shù)情況下,我們要做的是獲取到某個工作薄對象,并以此來獲得其中的工作表對象,然后再對工作表中的數(shù)據(jù)進行處理。而后面這一部分(操作工作表)在前面已經(jīng)講過了,所以本章只講如何在VBA中打開、關(guān)閉工作薄,以及介紹兩個常用的工作薄對象。在VBA中打開工作薄有兩種方法:顯式打開及隱式打開。 1. 顯式打開顯式打開即跟我們手動雙擊打開一個Excel文件一樣,可以看到工作薄的內(nèi)容,可以在里面進行各種操作。代碼及示例如下:
結(jié)果如下: 然后就可以根據(jù)這個
或者取得這個工作薄的一些屬性:
最后可以使用
2. 隱式打開使用隱式打開的時候,這個工作薄在前端是看不到的,只有在VBE環(huán)境中(的工程窗口)可以看到它。示例代碼及結(jié)果如下:
與顯式打開不同的是,這是使用了 可以在VBE的工程窗口(上圖左側(cè))中看到有一個新的工項目被加載了。但此時是并不能看到有一個Excel文件被打開的,這個已經(jīng)被VBA隱式打開的文件,只能使用VBA進行操作,在使用上與顯式打開后得到的workbook對象沒什么區(qū)別,如獲取其中的工作表對象、獲取它的名字、關(guān)閉它等,都是一樣的。這里就不舉例了。 3. 關(guān)閉無論是顯式打開還是隱式打開,如果在新打開的工作薄中有更改,在使用workbook.Close方法時,會有個彈窗提示是否要保存更改,就跟我們平時使用時一樣: 又或者被打開的工作薄里面有些公式,在打開這個工作薄時公式結(jié)果變了(其實也等于是有更新了),在關(guān)閉時都會出現(xiàn)這個提示。如果可以確定是否需要更改,可以在保存時加入相應(yīng)的參數(shù)
4. ThisWorkbook與ActiveWorkbook
就跟我們在使用QQ聊天時一樣,我們不可能同時單獨地發(fā)信息給兩個不同的QQ好友,只能有一個聊天窗口是被激活的。Excel也一樣,當(dāng)前被激活的工作薄就是ActiveWorkbook對象(同樣類似地,也有ActiveWorksheet對象)。 有些情況下,
運行結(jié)果: 因為新打開的工作薄會被處于激活狀態(tài)(就跟手工打開另一個Excel文件一樣),所以這時新打開的ActiveMe.xlsx才是ActiveWorkbook,而當(dāng)前代碼所在的工作?。╰est.xlsm)則是ThisWorkbook。而如果只有一個工作薄被打開或者是當(dāng)前代碼所在工作薄處于激活狀態(tài)時,則ThisWorkbook和ActiveWorkbook是同一個對象。 |
|