2009-07-27 53 views
3

我正在为Excel工作表创建一些VBA脚本,并且我创建了一个模块,其中包含主要存储每个数据库字段名称的主要字符串的完整列表。这样,如果有人修改了数据库,他们可以更新模块中的VBA变量,然后我所有脚本都直接引用全局变量而不是字段名,甚至不知道其中的差别。Excel中的VBA:全局常量文件

无论如何,我将在几个不同的无关excel工作表中工作,我希望他们都能访问该模块。最糟糕的情况是,我可以手动将模块复制到每个工作簿,但是如果它们都可以从外部引用同一个确切文件,那么这将非常棒......就像VBA/Excel中可能的那样?

而且,现在我的变量看只是想:

Global tblDeviceType As String 

然后我在模块中的功能打开工作簿时调用初始化。有没有更好的方法来保持我所有的常量或这是否工作?

哦,是的,我没有真正将它们声明为常量,因为它们中的一些具有更复杂的数据类型(比如范围)并且不能静态声明 - 至少它看起来并不像它们。

回答

2

有几个方法,你也许可以做到这一点:

  1. 基地所有的Excel工作表从相同的Excel模板。这样他们都可以访问模板中声明的代码。但是,你必须分发模板,我想。
  2. 创建一个activex dll,然后在每个excel模板中引用它。
  3. 或者您可以在运行时动态加载模块。你会使用像ThisWorkbook.VBProject.VBComponents.Import()这样的方法。您可能必须运行手动填充变量的方法。 (注意我还没有测试过)关于这种类型的excel操纵的更多信息可以发现here
0

您可以创建一个包含所有名称的Excel电子表格,然后使用与Global具有相同名称的命名范围,将您的代码更改为使用命名范围,并将该表单作为插件。

我只是将模块复制到其他电子表格。

编辑:你也许可以创建一个空白的电子表格,然后制作一个插件。我不知道Excel中的Globals是否会以这种方式工作,但值得一试。如果你这样做,请回到这里,它是否有效。

2

或者,您可以创建一个文本文件(Microsoft Scripting Runtime library - > class Scripting.TextStream),您可以在其中保存变量&,以便在阅读时加载它们。

将文本文件放置在所有工作表可访问的中央位置。
对于范围,您可以将范围的地址存储在文本文件中。

让我知道,如果我失去了什么。

0

其实最简单的方法是将模块添加到.XLA excel插件文件中。 然后通过Excel Addins对话框添加此文件。

该模块现在可在全球范围内用于在该用户帐户下运行的所有Excel解决方案。