Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel中的VBA:全局常量文件_Excel_Global Variables_Excel 2007_Vba - Fatal编程技术网

Excel中的VBA:全局常量文件

Excel中的VBA:全局常量文件,excel,global-variables,excel-2007,vba,Excel,Global Variables,Excel 2007,Vba,我正在为Excel工作表编写一些VBA脚本,并创建了一个模块,其中包含一个完整的字符串列表,其中大部分字符串存储每个数据库字段的名称。这样,如果有人修改数据库,他们可以更新模块中的VBA变量,然后我的所有脚本(直接引用全局变量而不是字段名)都不知道区别 无论如何,我将在几个不同的无关excel工作表中工作,我希望它们都能访问该模块。最糟糕的情况是,我可以手动将模块复制到每个工作簿中,但如果它们都可以从外部引用相同的文件,那就太棒了。。。在VBA/Excel中是否可以这样做 另外,现在我的变量看起

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

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

另外,现在我的变量看起来很简单:

Global tblDeviceType As String
然后我在模块中的一个函数中初始化它们,该函数在工作簿打开时被调用。是否有更好的方法来维护我的所有常量,或者这是否有效


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

您可以制作一个包含所有名称的Excel电子表格,然后使用与全局名称相同的命名范围,更改代码以使用命名范围,并使工作表成为外接程序

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


编辑:您还可以创建一个包含模块的空白电子表格,然后将其制作成一个加载项。我不知道Excel中的Globals是否会这样工作,但值得一试。如果你这样做了,请发回这里,不管它是否有效。

或者,你可以创建一个文本文件(Microsoft脚本运行库->class Scripting Runtime library->class Scripting.TextStream),在那里保存变量并在你想阅读时加载它们

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


如果我遗漏了什么,请告诉我。

有几种方法可以做到这一点:

  • 基于同一excel模板创建所有excel工作表。通过这种方式,他们可以访问模板中声明的所有代码。但我认为你也必须分发模板
  • 创建activex dll,然后在每个excel模板中引用它
  • 或者,您可以在运行时动态加载模块。您可以使用类似ThisWorkbook.VBProject.VBComponents.Import()的方法。您可能必须运行手动填充变量的方法。(注意,我还没有测试过这一点)可以找到有关这种excel操作的更多信息

  • 实际上最简单的方法是将模块添加到.xLA Excel Admin文件中。 然后通过Excel加载项对话框添加此文件

    该模块现在可供在该用户帐户下运行的所有excel解决方案全局使用