在不指定FileName的情况下将数据从另一个打开的工作簿复制到主工作簿

时间:2018-11-09 04:07:25

标签: excel vba excel-vba excel-2016

有没有一种方法可以在不使用invoked的情况下从任何打开的工作簿复制和粘贴数据?我希望能够从工作簿复制相同的数据集,然后将其关闭,然后在打开另一个工作簿时,宏将知道我正在从第二个工作簿进行复制。

例如: 代码1:从第一个数据源复制

Workbooks.Open("FileName")

代码2:从第二个数据源复制

Set wb1 = ThisWorkbook
Set wb2 = Workbooks.Open("C:\Users\HONL120\Desktop\Sept HC Reports\HR Headcount Report 2018 Australia SEPTEMBER.XLSX")

在上面的示例中,我想避免这种情况,并让宏知道当我打开第二个数据源时,我正在从中提取数据,而不必再次键入文件名。

有没有办法做到这一点?希望我的解释清楚并预先感谢!

2 个答案:

答案 0 :(得分:0)

我想您可以遍历打开的工作簿,并使用 If语句忽略那些您不想包括的内容:

Dim wb As Workbook

For Each wb In Application.Workbooks
    If wb.Name <> "PERSONAL.XLSB" And wb.Name <> ThisWorkbook.Name Then
        Rem: Do what you need to do with the other workbook
    End If
Next wb

答案 1 :(得分:0)

抱歉,我并没有完全了解您的目标是什么,但是我想您可以在 excel模板文件中设置宏(请在google上找到它的位置,因为它取决于您的版本) ),代码为 activeworkbook .range(xxx).copy。

在这种情况下,每当您打开要复制的新工作簿时,都可以在excel中运行此宏(您甚至可以将宏设置为快速访问栏,以​​便于访问)

希望获得帮助。