2011-07-25 135 views
2

我在一個工作表(internal.xls)中定義的宏如一個工作簿中的宏是否可以更改另一個工作簿?

Public Sub sheet2test() 
    Workbooks.Open Filename:="external.xls" 
    Windows("external.xls").Activate 
    Sheets("Sheet3").Activate 
    Range("A5").Value = 5 

End Sub 

運行該代碼,打開external.xls,並激活它的片材3。然而的5值被放置在internal.xls和不external.xls。我如何確保對其他工作表進行更改?

回答

5

答案是肯定的。

你只是錯過了一件事。試試下面的代碼進行修改,external.xls:

Public Sub sheet2test() 
Workbooks.Open Filename:="external.xls" 
Workbooks("external.xls").Activate 
ActiveWorkbook.Sheets("Sheet3").Activate 
Range("A5").Value = 5 
End Sub 

編輯:

對不起,我沒有指向我所做的改變。

我剛添加ActiveWorkbook.到線4 這已被添加到使在當前激活的工作簿(external.xls)的變化和不包含和執行宏 (internal.xls)工作簿

+1

答案應該清楚那個「一個錯過的東西」是什麼。在我看來,雖然技術上是正確的,但總的來說這是一個糟糕的答案。 – Juliusz

4

你不需要做所有這些激活。它所做的只是導致屏幕閃爍並延遲處理。

公用Sub sheet2test() Workbooks.Open文件名:。。。= 「external.xls」 工作簿( 「external.xls」)表( 「表Sheet 3」)範圍( 「A5」)值= 5 完子

3

我會用:

dim wb as workbook, sh as worksheet 
set wb = workbooks.open("thatWorkbook.xls") 
'Now you have a proper reference to the newly opened workbook ! 
set sh = wb.sheets("sheet3") 
sh.range("a1") = "hello world" 

如前所述別人,各種Activate指令比這裏更加有用的不便。

相關問題