Привет, я новичок в VBA, поэтому извиняюсь, если мой код выглядит плохо. У меня есть макрос, который обновляет определенные ячейки в одном столбце главной таблицы, извлекая данные из определенной рабочей книги. Однако я хотел бы, чтобы мой макрос знал, что я извлекаю данные из другой рабочей книги без указания workbooks.Open(FileName)
, чтобы я мог автоматически обновлять свою главную таблицу из любой другой открытой рабочей книги.
Основная проблема заключается в том, что, поскольку одни и те же данные находятся в разных ячейках в нескольких книгах, мне интересно, как я могу скопировать эти данные, ссылаясь на их разные ячейки для каждой книги.
Код:
Sub UpdateData()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim ws1 As Worksheet
Dim EMS As Worksheet
Dim TD As Worksheet
Dim JV1 As Worksheet
Application.ScreenUpdating = False
Set wb1 = ThisWorkbook
wb1.Application.Visible = True
Set ws1 = wb1.Sheets(" Master Data")
Set wb2 = Workbooks.Open("C:\Users\HONL120\Desktop\Sept HC Reports\HR Headcount Report 2018 Australia SEPTEMBER.XLSX")
wb2.Application.Visible = False
Set EMS = Sheets("Employee Movement Summary")
EMS.Range("J19").Copy
ws1.Range("J34").PasteSpecial xlPasteValues
Set TD = Sheets("Turnover Dashboard")
TD.Range("J44").Copy
ws1.Range("J2").PasteSpecial xlPasteValues
TD.Range("J47").Copy
ws1.Range("J3").PasteSpecial xlPasteValues
EMS.Range("J10").Copy
ws1.Range("J5").PasteSpecial xlPasteValues
EMS.Range("J11").Copy
ws1.Range("J6").PasteSpecial xlPasteValues
EMS.Range("J16").Copy
ws1.Range("J7").PasteSpecial xlPasteValues
EMS.Range("J17").Copy
ws1.Range("J8").PasteSpecial xlPasteValues
TD.Range("K3:K7").Copy
ws1.Range("J10:J14").PasteSpecial xlPasteValues
TD.Range("J32:J43").Copy
ws1.Range("J16:J27").PasteSpecial xlPasteValues
Set JV1 = Sheets("JV1")
JV1.Range("Q26").Copy
ws1.Range("J29").PasteSpecial xlPasteValues
JV1.Range("Q28:Q29").Copy
ws1.Range("J30:J31").PasteSpecial xlPasteValues
Application.ScreenUpdating = True
wb2.Application.Visible = True
End Sub
Так, например, в этой другой рабочей книге диапазон для копирования TD.Range("J44").Copy
основан на ячейке J44, но это может быть не так в других рабочих книгах с данными того же типа.
Аналогично, я хотел бы скопировать из другой открытой рабочей книги, независимо от того, что открыто, и не указывать имя файла как таковое Set wb2 = Workbooks.Open("C:\Users\HONL120\Desktop\Sept HC Reports\HR Headcount Report 2018 Australia SEPTEMBER.XLSX")
.
Есть ли способ автоматизировать это? или я должен найти определенные ячейки для копирования в каждой книге вручную? Заранее спасибо!