2009-07-27 94 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解決方案。