3

私はExcelワークシート用のいくつかのVBAスクリプトに取り組んでおり、各データベースフィールドの名前を格納するほとんどの文字列のリスト全体を含むモジュールを作成しました。そうすれば、誰かがデータベースを変更した場合、モジュール内のVBA変数を更新でき、フィールド名ではなくグローバル変数を直接参照するすべてのスクリプトが違いを認識しません。

とにかく、私はいくつかの異なる無関係のExcelシートで作業するつもりであり、それらすべてにそのモジュールへのアクセス権を持たせたいと思います。最悪の場合、モジュールを手動で各ブックにコピーすることもできますが、それらすべてが同じ正確なファイルを外部から参照できるとしたら、それは素晴らしいことです... VBA / Excelで可能なことのようなものですか?

また、現在、私の変数は次のようになっています。

Global tblDeviceType As String

次に、ブックが開いたときに呼び出されるモジュール内の関数でそれらを初期化します。すべての定数を維持するためのより良い方法はありますか、それともこれは機能しますか?

そうそう、実際には定数として宣言しませんでした。なぜなら、それらのいくつかはより複雑なデータ型(Rangesなど)を持ち、静的に宣言できなかったためです。少なくとも、そうは思われませんでした。

4

4 に答える 4

2

または、テキストファイル(MicrosoftScriptingRuntimeライブラリ->classScripting.TextStream)を作成して、変数を保存し、読みたいときにロードすることもできます。

すべてのシートからアクセスできる中央の場所にテキストファイルを配置します。
範囲の場合、範囲のアドレスをテキストファイルに保存できます。

何か足りないものがあれば教えてください。

于 2009-07-27T18:10:29.757 に答える
2

おそらくこれを行うことができるいくつかの方法があります:

  1. すべてのExcelシートを同じExcelテンプレートに基づいて作成します。このようにして、テンプレートで宣言されたコードにすべてアクセスできます。しかし、テンプレートも配布する必要があると思います。
  2. ActiveX dllを作成し、各Excelテンプレートで参照します。
  3. または、実行時にモジュールを動的にロードすることもできます。ThisWorkbook.VBProject.VBComponents.Import()のようなメソッドを使用します。おそらく、変数を手動で設定するメソッドを実行する必要があります。(私はこれをテストしていないことに注意してください)このタイプのExcelの操作に関する詳細はここにあります
于 2009-07-27T21:08:04.813 に答える
0

すべての名前でExcelスプレッドシートを作成し、グローバルと同じ名前の名前付き範囲を使用し、名前付き範囲を使用するようにコードを変更して、シートをアドインにすることができます。

モジュールを他のスプレッドシートにコピーするだけです。

編集: モジュールを含む空白のスプレッドシートを作成して、それをアドインにすることもできる場合があります。Excelのグローバルがそのように機能するかどうかはわかりませんが、試してみる価値はあります。うまくいくかどうかは、ここに投稿してください。

于 2009-07-27T18:06:18.050 に答える
0

実際に最も簡単な方法は、モジュールを.XLAExcelアドインファイルに追加することです。次に、Excelの[アドイン]ダイアログからこのファイルを追加します。

このモジュールは、そのユーザーアカウントで実行されるすべてのExcelソリューションでグローバルに利用できるようになりました。

于 2009-07-30T00:03:21.170 に答える