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

时间:2016-03-23 15:58:10

标签: excel vba macros

我需要在一个工作簿中编写一个宏,但在那个marco我需要告诉它去另一个工作簿来复制一些数据并粘贴到有宏的工作簿中,现在我有一个引用问题的问题其他工作簿,因为该工作簿的名称将始终不同,但我从中复制的工作表将始终具有相同的名称。有没有一种简单的方法可以让Macro总是在不使用工作簿名称的情况下从正确的openbook中获取数据?

非常感谢

1 个答案:

答案 0 :(得分:2)

如果 其他工作簿打开,那么您可以使用类似的内容并且相当可靠:

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作为另一个工作簿的变量返回:

Set otherWB = GetOtherWorkbook("some sheet name")

If otherWB Is Nothing Then 
    Exit Sub
Else
    'Do stuff...
End If

否则,不能可靠地引用另一个工作簿,而不知道Workbooks集合中的名称或它的索引。

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