Vba 在两个工作簿上同时工作

Vba 在两个工作簿上同时工作,vba,excel,Vba,Excel,如果我同时在写两本工作手册 例如“1.xlsb”和“2.xlsb” 我在“1.xlsb”上运行宏,同时我在“2.xlsb”上工作 在宏中的“1.xlsb”中有一条语句 thiswook.ActiveSheet 现在的问题是,当我运行宏并转到“2.xlsb”中的另一个工作簿时,在“1.xlsb”中它无法访问ThisWorkBook.ActiveSheet,那么我可以为此做些什么,以便我也可以在另一个工作簿上工作,并且宏正在另一个工作簿的后台运行 Public Function GetBWTable

如果我同时在写两本工作手册 例如“1.xlsb”和“2.xlsb” 我在“1.xlsb”上运行宏,同时我在“2.xlsb”上工作 在宏中的“1.xlsb”中有一条语句
thiswook.ActiveSheet

现在的问题是,当我运行宏并转到“2.xlsb”中的另一个工作簿时,在“1.xlsb”中它无法访问ThisWorkBook.ActiveSheet,那么我可以为此做些什么,以便我也可以在另一个工作簿上工作,并且宏正在另一个工作簿的后台运行

Public Function GetBWTableInActiveSheet() As BoardwalkTable
    Dim ws As Worksheet
    Dim bwtResult As BoardwalkTable
    Set bwtResult = Nothing
    Set ws = ThisWorkbook.ActiveSheet

    For Each bwtResult In BoardwalkAPI.GetBoardwalkTables
        If StrComp(bwtResult.getrange.Parent.name, ws.name, vbTextCompare) = 0 Then
            Exit For
        End If
    Next bwtResult

    Set GetBWTableInActiveSheet = bwtResult
    Debug.Print bwtResult.getName
End Function

您可以使用
工作簿(“工作簿名称”).Sheets(“工作表名称”)

最简单的方法是在两个不同的Excel实例中打开工作簿。但是如果您不想这样做,您应该更改代码以避免使用诸如
Select
Activate
(和
Selection
ActiveSheet
ActiveWorkbook
)之类的东西。那么我可以用什么来代替它呢?在宏启动时读取并获取对工作表的引用,并使用该引用代替ActiveSheet。如果您想要更具体的建议,请发布一些实际的代码。我在这里粘贴了代码实际上这是一个大项目,但每次都有不同的工作表,我正在处理excel工作簿,它是客户的项目,有时可能是工作簿名称也不同