除非注明,文章均為 戰(zhàn)戰(zhàn)如瘋 原創(chuàng),轉(zhuǎn)載請保留鏈接: http://www.zhanzhanrufeng.com/cat1/67.html,VBA交流群273624828。
匯總是Excel VBA常用的一個功能,要想將很多個單獨的Excle工作簿中的數(shù)據(jù)匯總到一個表中,我們首先要學(xué)會怎么從各個工作簿中取得數(shù)據(jù)。在這里我提供兩個方法,一個是先利用VBA程序打開你要取數(shù)據(jù)的Excel工作簿,取出數(shù)據(jù),然后再關(guān)閉工作簿,第二個方法是用GetObject方法獲得工作簿對象。
先來看第一種方法,假設(shè)我有一個工作簿名為“文件1.xlsx”,它的sheet1,sheet2,sheet3中都有內(nèi)容,我現(xiàn)在要通過一個VBA程序?qū)?nèi)容三個表的A1單元格內(nèi)容都調(diào)用到當(dāng)前工作表的相應(yīng)位置,看代碼
Sub test()
Dim a, b, c
Workbooks.Open ThisWorkbook.Path & "/文件1.xlsx" '打開文件1.xlsx
a = ActiveWorkbook.Sheets(1).Range("a1") '令a為sheet1的A1
b = ActiveWorkbook.Sheets(2).Range("a1") '令b為sheet2的A1
c = ActiveWorkbook.Sheets(3).Range("a1") '令c為sheet3的A1
ActiveWorkbook.Close False '關(guān)閉且不保存
Sheet1.Range("a1") = a
Sheet2.Range("a1") = b
Sheet3.Range("a1") = c
End Sub
先用workbooks的open方法打開工作簿,這時文件1.xlsx就成為了當(dāng)前活動的工作簿即activeworkbook,那么利用變量a,b,c將相應(yīng)的內(nèi)容記錄下來,之后關(guān)閉工作簿,再將a,b,c分別放入相應(yīng)的位置,這樣就將文件1.xlsx中相應(yīng)的內(nèi)容取下來了。
在這里要注意的是,之所以要用a,b,c來記錄相應(yīng)的內(nèi)容,而不是直接令sheet1.range("a1")去獲得相應(yīng)的值是因為打開文件1.xlsx之后該工作簿就成為了活動工作簿,因此你這時的sheet1.range("a1")代表的就是文件1.xlsx的sheet1的A1,而不是你當(dāng)前操作的這個工作簿了。
另一種方法我們在如何從其它的Excel中獲得數(shù)據(jù)(2)中接著介紹。本節(jié)示例文件下載http://pan.baidu.com/s/1kTn4G3H
聯(lián)系客服