2012-03-13 32 views
10

VBAで作業するときにコードを複製しないようにする最良の方法は何ですか?VBAでコードを再利用する方法

私はimportステートメントを追加してすべてのクラスのパブリックプロパティと関数にアクセスできる言語に慣れているので、いくつかの共通関数を持つユーティリティクラスを作成し、そのプロジェクトにアクセスできます私はそれをインポートすることを選択します。これらの関数のうちの1つを更新したいときはいつでも、すべてのプロジェクトで機能するように編集するだけです。

VBAでこの機能を複製する良い方法はありますか?

答えて

13

以下は、Excelに焦点を当てていますが、どのOffice製品にも同じことが当てはまります。

簡単な方法は、再利用可能なコードをExcel 2003用のアドイン(* .xla、Excel 2007+用* .xlam)として保存することです。次に、アドインをExcelに追加すると、開いているすべてのスプレッドシートは、アドインにあるカスタム関数にアクセスできます。スプレッドシートに特定のVBAコードを追加すると、アドインへの参照を追加することができ、VBAコードはアドインのすべての公開サブ、関数、およびクラスにアクセスできます。

私の組織では、C:\ Program Files \ OrganisationNameに格納されている3つの自家製のアドインを使用しています。誰もが彼らにアクセスできます。更新が行われると、新しいバージョンをすべてのハードドライブにコピーしてExcelを再起動するだけで、新しいバージョンが作成されます。

アドインは、このような機能などのユーティリティ機能が含まれています。

  • は/スプレッドシート/ファイル/データベースへのデータの書き込みからデータを読み込みます。
  • などなど
  • 高度な統計機能が
  • リストから重複を削除するなどの通常のデータ操作

いくつかの欠点:

  • は、Excelオープンの複数のインスタンスを持っている場合は、のみ1つはアドインを更新でき、他のインスタンスは読み取り専用モードです
  • Excelがクラッシュした場合、自動回復モードでは一般にあなたのアドインで行った変更(新しいバージョンのTBC) - いくつかのツールが自動的にあることは、定期的に

代替を保存たとえばVBやC#でのXLLまたはCOMライブラリを開発することであるが、これは私が持っているものです試していない。

詳細な手順が必要な場合は、オンラインで多くのチュートリアルがあります。

+0

パーフェクト。私は参照を設定することを忘れていたので少し固執しましたが、一度私はあなたの記事を読んで、それがすべて正常に機能したのです。ありがとう:) –

+0

あなたの欠点(更新)の1つがここで解決されます:http://www.excelguru.ca/content.php?152-Deploying-Add-ins-in-a-Network-Environment。これは今後誰かがここに来るのを助けることを願っています。 –