2013-03-04 55 views
2

我有一个主工作簿,其中包含一个可打开包含需求预测的另一个工作簿的宏。通过宏打开的工作簿是从客户门户下载的,并且每天都是新的,而不会事先对其进行编辑。通过代码添加模块

宏然后遍历信息并创建新的可读和更直观的工作表。但是,在这些工作表中的一部分上,我想添加一些事件驱动的代码,以在鼠标移动或选择单元格时提供工具提示。

是否有任何可能(没有安装来自vanilla Excel 2010的加载项)将代码添加到在宏期间创建的工作表对象?

已处理工作簿的布局或多或少是静态的,所以我想知道是否应创建模板文件,然后将输入复制到其中。这将允许我在添加数据之前对事件进行编码。这是最好的可能吗?

+2

看起来像你可以这样做:'Application.VBE.ActiveVBProject.VBComponents.Import(“c:\ MyFolder \ MyFileName.bas”)'... – Dan 2013-03-04 08:54:49

+0

感谢您的答复,赞赏。尽管我最终创建了一个模板文件,因为对于我来说创建,测试和调试更简单。 – 2013-03-04 13:04:14

回答

0

正如Dan指出的那样,您可以使用Application.VBE.ActiveVBProject以编程方式将代码模块添加到工作簿。但是这样做需要更宽松的宏安全设置(默认设置为不可信),不建议使用

当我有做类似的事情,我用三个工作簿:

  1. 包含数据的工作簿
    • 这本书有没有微距功能
  2. 包含必要的模板工作簿宏
  3. 启用宏的工作簿以促进转换。

使用工作簿#3打开工作簿#1并将其数据复制到工作簿#2中。保存工作簿#2的副本并关闭它。根据需要重复此过程。

这不是最漂亮的解决方案,但它保持您的代码模块化。

+0

这正是我最终做的。我必须编写一些将在导入数据的工作表上执行的事件。我把它们放在一个模板启用宏的工作簿中,并在清理数据之前将导入数据复制到此模板的副本中。 – 2013-03-08 07:44:03