这里是场景。我有多个Excel工作簿,可以相互复制和粘贴数据。所以这个宏的工作原理是从一个工作簿open.copy.close然后open.paste.close到另一个。我正在创建一个函数来在文件关闭时自动运行宏。如何让vba代码只在活动工作簿上运行自动关闭?
这是问题所在,当我单击工作簿1中的宏按钮时,它应该从工作簿2打开.copy.close。但是,由于在工作簿2中关闭文件功能时会自动运行,所以会出现错误(2个宏不能同时运行)任何解决方案?我正在寻找解决方案,只有在文件关闭时自动运行宏如果它是一个活跃的工作簿。以下是我现在有:
Workbook 1
Sub workbook_beforeclose(cancel As Boolean)
Application.Run "Sheet1.UpdateYellowTabs_Click"
End Sub
Workbook 2
Sub Workbook_BeforeClose(Cancel As Boolean)
Workbook.BeforeClose
Application.Run "Sheet12.UpdateGreen_Click"
End Sub
如何编写它在工作簿中的代码只能使这个运行,只有当打开/关闭受宏观时,它的主动/人类用户和关闭不?
谢谢!
嗨,我试过你的代码,它实质上是我想要做的。但是,它不起作用。我希望它能够在例程'workbook_beforeclose'上运行,只有当包含它的工作簿是'活动工作簿'时。我是否需要激活和停用工作簿,以便宏知道哪个是哪个? – Carmen
@Carmen,本质上,这个想法是,如果你通过'wb1'的代码关闭'wb2',通过激活'wb1',找到一种在关闭'wb2'前关闭它的方法。像'wb1.Activate:wb2.close'。 –
我了解它的技术部分,并从此开始尝试使用它。我已经分别激活了wb1和wb2,并按照建议插入了'wb1.activate:wb2.close',但它仍然不起作用。是否将代码添加到工作簿代码或我的模块/工作表中? '子Workbook_BeforeClose(取消正如布尔) 如果不Application.ActiveWorkbook是我,然后退出子 Application.Run“Sheet12.UpdateGreen_Click” 结束Sub'我得到这个错误,我应该是每个工作簿定义后,即使激活和停用。 – Carmen