簡體   English   中英

在VBA中調用打開的工作簿

[英]Calling an opened workbook in VBA

這是我目前擁有的

Dim mastertemp As Workbook
Dim testproject As Workbook

Set testproject = Workbooks("C:\Users\zzz\Documents\Test Project.xlsm")
Set mastertemp = Workbooks("C:\Users\zzz\Documents\MasterTemp.xlsx")

mastersheet.sheets("Sheet1").activate

第三行代碼使我的下標超出范圍,有什么想法嗎?

我希望能夠在工作簿之間跳轉,而無需系統給我“工作簿已經打開,重新打開會丟棄所有更改,等等”

我會做這樣的事情:

Dim wbk as Workbook
Set wbk = Workbooks("Test Project.xlsm")

do stuff
Workbooks.Open ("C:\Users\zzz\Documents\MasterTemp.xlsx")
do stuff

wbk.Sheets("Dashboard").Activate

如果您知道工作簿已經打開,請在“ Workbooks集合中按名稱引用它:

Dim testProject as Workbook
Set testProject = Workbooks("C:\Users\zzz\Documents\Test Project.xlsm")
testProject.Sheets("Dashboard").Activate

如果您不知道工作簿是否打開,則可以使用一些錯誤處理邏輯,例如:

Dim testProject as Workbook

On Error Resume Next
' Attempt to index this workbook from the open Workbooks collection:
Set testProject = Workbooks("C:\Users\zzz\Documents\Test Project.xlsm")
If Err.Number <> 0 Then
    ' If the above fails, then the workbook isn't open, so we need to open it:
    Set testProject = Workbooks.Open("C:\Users\zzz\Documents\Test Project.xlsm")
End If
On Error GoTo 0

如果您始終知道工作簿的名稱,則可以這樣做

workbooks("Test Project").sheets("Dashboard").Activate 'add the file extension to the name if you've turned on file extensions in windows explorer 

如果工作簿名稱可能正在更改(或者晚上沒有更改,那么您將多次引用該工作簿),那么findwindow的建議就是解決之道。

dim TestWorkbook as workbook
set TestWorkbook=Workbooks.Open ("C:\Users\zzz\Documents\Test Project.xlsm")
TestWorkbook.sheets("Dashboard").activate

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM