VBA - Как ссылаться на две отдельные открытые книги, не называя их? - PullRequest
0 голосов
/ 09 января 2019

Я некоторое время оглядывался по сторонам и, похоже, не могу найти то, что мне нужно.

1 Ответ

0 голосов
/ 09 января 2019

См. Рабочие книги

Если вы знаете, что открыты только две книги, вы можете использовать свойство Index.

Sub ReferToWorkbooks()

    Dim wb1 As Workbook
    Dim wb2 As Workbook

    Set wb1 = Workbooks(1)
    Set wb2 = Workbooks(2)

    Debug.Print wb1.Name
    Debug.Print wb2.Name

End Sub

Лучше пройтись по всем открытым рабочим книгам, а затем создать ссылки на те, которые вам нужны.

Sub ReferToWorkbooks2()

    Dim wb As Workbook

    For Each wb In Workbooks
        Debug.Print wb.Name
    Next

End Sub

Если в вашем коде есть лист, используйте свойство Parent:

Sub ReferToWorkbooks3()

    Dim ws As Worksheet
    Dim wb As Workbook

    Set ws = Worksheets("Sheet1")

    Debug.Print ws.Parent.Name

    ' or

    Set wb = ws.Parent
    Debug.Print wb.Name

End Sub

Если в вашем коде есть диапазон, вы дважды используете свойство Parent:

Sub ReferToWorkbooks4()

    Dim rng As Range
    Dim wb As Workbook

    Set rng = Range("A1")

    Debug.Print rng.Parent.Parent.Name

    ' or

    Set wb = rng.Parent.Parent
    Debug.Print wb.Name

End Sub

Вы должны лучше объяснить сценарий, где это может вам понадобиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...