【发布时间】:2019-04-11 15:45:30
【问题描述】:
您好,我是 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")。
有没有办法让这个自动化?还是我必须在每个工作簿中手动找到要复制的特定单元格?提前致谢!
【问题讨论】:
-
尝试为这些单元格指定特定名称,在每个工作簿中都相同。宏可以只按名称调用数据。
-
@SolarMike 你能给我举个例子吗?很抱歉,我对此感到无语。
-
使用插入菜单并管理名称:给一个单元格命名并尝试...您也可以在计算中使用这些名称...