2017-10-04 58 views
-1

大家好,並提前感謝您的時間。Excel VBA - 從名爲範圍的各種工作簿複製到一個「回顧」工作簿

我不是vba的龐大專家,但有時它可以幫助我在重複性任務上獲得一些美好時光。

我想從各種文件收集信息到一個「回顧」文件。 我命名了一些範圍(每個單元格)以簡化所有文件中這些信息的查找。


這裏是我開始寫的臺詞:

Sub collectdata() 
    Set a = Workbooks.Open("C:\full address\Project1.xlsx") 
    Set b = Workbooks.Open("C:\full address\Project2.xlsx") 
    Set c = Workbooks.Open("C:\full address\Project3.xlsx") 

    ThisWorkbook.Sheets("Data").Range("C3") = a.Application.Range("Project1_Total") 
    ThisWorkbook.Sheets("Data").Range("C3") = b.Application.Range("Project2_Total") 
    ThisWorkbook.Sheets("Data").Range("C3") = c.Application.Range("Project3_Total") 

    a.Close savechanges:=False 
    b.Close savechanges:=False 
    c.Close savechanges:=False 
End Sub 

我堅持錯誤1004我想我知道爲什麼,但我不知道該如何糾正。

有了一個「項目」,一切都可以。
但是,一旦我添加第二個文件,我得到錯誤1004.

從一個項目中有一個命名的範圍是沒關係的。 但是,一旦我從同一個文件中添加第二個命名範圍,收到錯誤1004

感謝您的時間。

+0

你需要a.Sheets(),b.Sheets()等...像你在左手邊 - 而不是a.Application,b.Application等... – CallumDA

回答

0

這會假設範圍是在第一層上下工作:

ThisWorkbook.Sheets("Data").Range("C3") = a.Sheets(1).Range("Project1_Total") 
ThisWorkbook.Sheets("Data").Range("D3") = b.Sheets(1).Range("Project2_Total") 
ThisWorkbook.Sheets("Data").Range("E3") = c.Sheets(1).Range("Project3_Total") 

我以爲你不想多次改寫C3。如果你不知道哪個表的範圍上,你可以使用find找到一個工作簿中的範圍。

+0

這與CallumDA結合解決了我的問題。感謝您的支持。 –

+0

非常好。那麼你能接受答案來結束這個問題嗎? – JensS

相關問題