首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将VBA执行传递给另一个工作簿

将VBA执行传递给另一个工作簿
EN

Stack Overflow用户
提问于 2017-06-28 20:49:36
回答 2查看 931关注 0票数 2

我想这个问题会有很多答案,但没有找到明显的答案。

是否可以将VBA执行传递给另一个工作簿?

我想做的是:将执行从ThisWorbook (WbA)传递到另一个工作簿( WbB,使WbB成为新的ThisWorkook),然后关闭Wb A。

编辑

我真正想做的是.

我正在寻找一种方法来更新我分发给几个人的工作簿,它包含20个工作表+10个代码模块+10个用户表单。

我的当前解决方案

每次打开工作簿(WbA)时,代码将首先检查网络目录中是否有新版本可用。如果是这样,宏建议用户自动下载/保存新的工作簿(WbB)并从WbA导出用户数据。

但是,在此之后,我不得不告诉用户,它现在可以关闭WbA并打开WbB并将数据导入到WbB中。

我更愿意自动化关闭的WbA /打开WbB /导入数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-28 21:45:53

您可以通过使用Application.OnTime来做到这一点。

WbA.xlsm中的代码:

代码语言:javascript
复制
Sub Macro1()
    Application.OnTime Now(), "WbB.xlsm!Macro2"
    ThisWorkbook.Close
End Sub

WbB.xlsm中的代码:

代码语言:javascript
复制
Sub Macro2()
    MsgBox ThisWorkbook.Name & " says hello"
End Sub

因为应用程序是通过计划的任务调用Macro2的,所以它不再需要打开WbA。

注意:WbB.xlsm甚至不需要在运行Macro1时打开,只要您完全限定了工作簿名称:

WbA.xlsm中的代码:

代码语言:javascript
复制
Sub Macro1()
    Application.OnTime Now(), "'C:\Temp\SO_Test\WbB.xlsm'!Macro2"
    ThisWorkbook.Close
End Sub

WbB.xlsm中的代码:

代码语言:javascript
复制
Sub Macro2()
    MsgBox ThisWorkbook.Name & " says hello"
End Sub

假设WbA.xlsm是运行Macro1时在Excel中打开的唯一工作簿,那么在打开WbB.xlsm并继续执行之前,您可能会在很短的时间内看到一个空的Excel。

票数 2
EN

Stack Overflow用户

发布于 2017-06-28 21:20:24

您只需在代码运行时打开工作簿A,您需要执行的最后一行代码应该是

代码语言:javascript
复制
WorkbookA.Close
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44812313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档