如何引用不使用工作簿名称的工作簿?

我需要在一个工作簿中编写一个macros,但是在那个marco中,我需要告诉它去另一个工作簿来复制一些数据并粘贴到有macros的工作簿中,现在我有一个引用另一个工作簿的问题,因为该工作簿的名称将始终不同,但我从中复制的工作表将始终具有相同的名称。 有没有简单的方法来问macros总是从正确的开放手册抓取数据,而不使用工作簿的名称?

非常感谢

如果这是唯一的其他工作簿打开,那么你可以使用类似的东西,将相当可靠:

 Function GetOtherWorkbook(sheetName$) Dim wb as Workbook Dim ws as Worksheet For Each wb in Workbooks If Not wb = ThisWorkbook Then For Each ws in wb.Worksheets If ws.Name = sheetName Then Set GetOtherWorkbook = wb GoTo EarlyExit End If Next End If Next MsgBox sheetName & " not found in any open workbook.", vbCritical Set GetOtherWorkbook = Nothing EarlyExit: Exit Function 

然后使用此函数返回otherWB作为其他工作簿的variables:

 Set otherWB = GetOtherWorkbook("some sheet name") If otherWB Is Nothing Then Exit Sub Else 'Do stuff... End If 

否则,不能在不知道名称或Workbooks集合中的索引的情况下可靠地引用其他工作Workbooks

注意如果有其他打开的工作簿,则如果多个工作簿包含相同的工作表名称,则此方法可能会返回误报。