2011-05-16 72 views
1

我有这个设计模板,我想在默认情况下应用于应用程序,只要它打开。但是需要打开文档才能应用设计模板。因此,无论何时打开/创建新的或现有的工作簿,我都必须定位一些处理程序。Excel VBA - 在应用程序打开时运行宏

那么我可以在这里采取哪种方法?

回答

3

我认为你可以使用Workbook_open事件。它听起来像对于你想要的行为就足够了,但是因为你希望你的宏是全局的,所以你可能需要为它们编写一个add in

+0

是的,我准备创建一个加载项。但是,Workook_Open事件是否会触发创建的新工作簿以及现有的工作簿? – 2011-05-16 07:40:35

+0

@肯尼我不认为它区分了两者。 – jonsca 2011-05-16 07:43:14

1

加载项方法最适合应用于现有工作簿。

如果您希望将标准设计模板应用于每个新工作簿,我建议您创建一个模板。

要做到这一点:

  1. 创建一个新的空工作簿
  2. 应用设计模板
  3. 将文件保存为Book.xlt(为Excel 2003,2007年的版本Book.xltx,2010)在以下文件夹中:%appdata%\Microsoft\Excel\XLSTART\

每次创建新工作簿(通过打开Excel或点击“新建”按钮)时,都会从此模板文件生成。

+0

这其实有一个巨大的缺陷。如果您将Book.xlsx文件放入XLSTART文件夹,那么新文档就是基于此。但是如果您碰巧打开了一个现有的文档,则会打开两个Excel窗口。这根本不是想要的。 – 2011-05-18 05:38:41

+0

这就是权衡 - 每次创建新工作簿时,您都需要点击按钮,或者每次从文件启动Excel时都要打开第二个空白工作簿这样的问题。我个人宁愿处理空白的工作簿。 – variant 2011-05-18 13:59:44