2011-12-28 89 views
0

我一直在为我的团队在工作中使用的项目工作。 Excel 2003电子表格位于NT NFS上,因此它们都可以使用它。我喜欢XLA,但是关于它们的一件令人讨厌的事情似乎是它们似乎并不依赖于工作簿。安装它为其余的,反之亦然。在编译时使用其他语言,您可以轻松链接特定源文件的库。在Excel中创建/使用自定义VBA库

我想知道是否有可能有工作簿依赖Excel VBA自定义库,以及如何做到这一点?谢谢

+0

VBA的美妙之处在于代码与Excel文档本身相关联。你在做什么需要加载项?使用加载项将增加更多的维护,并且如果您需要代码均匀应用于所有工作簿,则通常会使用该加载项。 – Fink 2011-12-28 16:05:01

+0

你的意思是,除了可以导出和导入为* .bas文件的模块以外?如果这不符合“工作簿依赖Excel VBA定制库”的要求,那么请澄清为什么不。 – 2011-12-28 18:13:35

回答

0

我使用的解决方案是编写我自己的自定义代码来加载和卸载加载项,具体取决于打开哪些工作簿。这很痛苦,但它完成了我想要的完美功能。为了让每个人都能共享它们,我把它们放在一个NFS上,并让它们成为只读的。当我想要更改这些库时,我打开它们进行简短的编写。

1

我为此使用CustomDocumentProperties。加载项包含所有代码,“模板”是要处理的文档。在模板中,创建一个名为“MyApp”的CustomDocumentProperty或其他。在加载项中,使用应用程序级别事件来监视workbook_open调用。在这种情况下,请检查打开的工作簿是否包含您的应用程序的CustomDocumentProperty。如果确实如此,请展示加载项的UI(例如使菜单可见)。

http://www.dailydoseofexcel.com/archives/2004/07/16/custom-document-properties/

看到在这个例子中,我使用Window_Activate事件。如果激活了正确类型的工作簿,我将显示自定义工具栏。如果它被停用,我会隐藏它。

+0

当我说一个文件时,我应该说这个文件只是主文件。每个团队成员远程更改外部Excel文档,并将这些更改远程“提交”到主文件,这是我所指的文件。原因是我需要能够合并对形状所做的更改,并且Share Workbooks不执行此操作,并且一次只有一个人可以对文档拥有写入权限。无论如何,这些开发区域都拥有大部分相同的VBA代码,每次有变更时,都必须向其他人提出。 – Wes 2011-12-29 03:37:06

+0

导入/导出模块不起作用,因为每次对.bas文件进行更改时,必须手动为每个远程Excel文档重新导入导入/导出模块。插件可以解决这个问题,因为我只需要对一个地方进行一次更改。 – Wes 2011-12-29 03:46:22

+0

为了回应迪克,我会利用你的建议,因为我认为它对我有一点帮助。但是根本的问题仍然存在,如果你打开了一堆excel工作簿,并且只有其中一个使用加载项,那么如何不为所有这些插件安装该加载项,并且只有其中之一?也许我只是挑剔。 – Wes 2011-12-29 04:44:53