Ошибка 438, когда я пытаюсь работать между двумя разными книгами. В частности, я хочу напечатать количество строк из одного в другом

#excel #vba

Вопрос:

У меня есть две рабочие книги, которые называются «Продажи» и «Трекер» соответственно. Я хочу напечатать количество строк в разделе «Продажи» в рабочей книге «Трекер».

В «Трекере» есть только один лист: «Подсчет». «У продаж есть два»: «Данные» и «Данные 2». Я хочу напечатать количество строк в разделе «Данные» в книге «Отслеживание».

Вот код, который выдает ошибку 438:

 Sub StoreDate()
    Dim SalesWb As Workbook, TrackerWb As Workbook
    Set SalesWb = Workbooks("Sales.xlsm")
    Set TrackerWb = Workbooks("Tracker.xlsm")

    Dim SalesWs As Worksheet, TrackerWs As Worksheet
    Set SalesWs = SalesWb("Data")
    Set TrackerWs = TrackerWb("Count")

    Dim last_row As Long
    last_row = SalesWs.Cells(Rows.Count, 1).End(xlUp).Row
    TrackerWs.Range("B" amp; Rows.Count).End(xlUp).Offset(1).Value = last_row
End Sub
 

Ответ №1:

Чтобы ссылаться на листы в книгах, вам нужно использовать Рабочие листы (или листы, если вы ленивы).

 Sub StoreDate()
    Dim SalesWb As Workbook, TrackerWb As Workbook
    Set SalesWb = Workbooks("Sales.xlsm")
    Set TrackerWb = Workbooks("Tracker.xlsm")

    Dim SalesWs As Worksheet, TrackerWs As Worksheet
    Set SalesWs = SalesWb.Worksheets("Data")
    Set TrackerWs = TrackerWb.Worksheets("Count")

    Dim last_row As Long
    last_row = SalesWs.Cells(Rows.Count, 1).End(xlUp).Row
    TrackerWs.Range("B" amp; Rows.Count).End(xlUp).Offset(1).Value = last_row
End Sub