我需要帮助来合并2个宏

时间:2010-08-02 02:45:43

标签: excel-vba vba excel

我需要帮助才能合并2个宏。基本上,在“MACRO1”在文件1中运行(宏1本身位于文件1中)之后,我希望excel在文件2中运行“MACRO 2”(宏2本身位于文件2中)。我尝试使用以下代码:

Windows("2.xls").Activate
Application.Run "2.xls!Macro2"

但是,它不是在文件2中运行,而是在文件1中运行,它覆盖了我在文件1中的所有原始数据。(它回到1.xls甚至我给了代码Windows(“2.xls”) .Activate)

我的目标: 在excel完成文件1中宏1的所有更新之后,我希望宏2执行我放入文件2中的宏1的命令。我该怎么做才能告诉excel在不同的文件中运行而不是一个文件我写了代码?我需要一个VBA代码,可以帮助我实现这一目标。任何人都可以帮忙??

感谢。

2 个答案:

答案 0 :(得分:0)

我可能会遗漏一些东西,但是我把一个样本(使用Office 2007)放在一起,它似乎对我有用。这是我做的:

在1.xlsm中,我有以下两个宏:

Sub Macro1()

    Sheet1.Range("A1").Value = "This is Workbook 1"

End Sub

Sub RunOverwrite()

    Call Application.Run("Macro1")
    Call Application.Run("2.xlsm!Macro2")

End Sub

我在第二个工作簿中有以下宏,名为2.xlsm:

Sub Macro2()

    Sheet1.Range("A1").Value = "This is Workbook 2"

End Sub

当我在第一个工作簿中执行RunOverwrite子时,它首先在第一个工作簿的单元格A1中写入“This is Workbook 1”(“1.xlsm”),然后在单元格A1中写入“This is Workbook 2”第二本工作簿(“2.xlsm”)。

我错过了原始查询中的内容吗?

答案 1 :(得分:0)

您可以尝试重写宏以将工作簿的名称作为参数。然后,您只需使用您希望它运行的工作簿调用它两次。

当你打电话时,它看起来像这样:

Macro2("C:\Desktop\Workbook1.xls")
Macro2("C:\Desktop\Workbook2.xls")

为了实现这一点,您的宏看起来像这样:

Sub Macro1(TargetBook as Workbook)
    ' Code goes here
End Sub