« ◆Excel VBA(マクロ側からVisual Basic Editorを操作する方法) | トップページ | ▼ダイエット大作戦(一進一退続く) »

2007年9月 6日 (木)

◆Excel VBA(ブックとマクロを分離する方法)

今回は、ブックとマクロを分離する方法をご紹介いたします。
通常、ブックにマクロを組み込んで配布してしまいがちですが、予め配布するブックとそれを操作するマクロを分離しておくと、不具合などが発生した場合はそのマクロだけ修正すれば再配布を最小限にすることができます。なぜ最小限かというと、ブック側の行や列を追加するといったレイアウトの変更の場合はブックの再配布が避けられないからです。
では、その方法ですが、ブック側とマクロ側に分けて解説します。

■ブック側
マクロ側にロジックを分離するといっても、ブック側に処理がなくなるわけではなく、マクロ側の処理を呼び出す命令を記述しなければなりません。
例えば、ボタンを配置して、そのボタンの処理を下記のように記述しておきます。
コンスタントの内容はシート上に定義しておくのも良いでしょう。

Const cMacroName As String = "【macro】.xls"
Const cMacroPath As String = "Q:\tool\" & cMacroName

Sub ボタン1()
    Workbooks.Open cMacroPath, ReadOnly:=True
    Application.Run (cMacroName & "!Button1_Click")

End Sub

Sub ボタン2()
    Workbooks.Open cMacroPath, ReadOnly:=True
    Application.Run (cMacroName & "!Button2_Click")

End Sub

■マクロ側(【macro】.xls)
下記例のように実際のロジックを記述します。
ブック側からオープンされるので、【macro】.xlsは非表示ブックにしておくと見た目がすっきりするでしょう。
ブック側を大勢のユーザに配布しても、このマクロ側の処理を変更するだけで即座に仕様変更等に対応できるという訳です。

Sub Button1_Click()

    Show.Dialog1

End Sub

Sub Button2_Click()

    Show.Dialog2

End Sub

マクロ側を普通の.xlsファイルとしていますが、アドインファイルにするという方法もありますが、機会があればご紹介いたします。

« ◆Excel VBA(マクロ側からVisual Basic Editorを操作する方法) | トップページ | ▼ダイエット大作戦(一進一退続く) »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« ◆Excel VBA(マクロ側からVisual Basic Editorを操作する方法) | トップページ | ▼ダイエット大作戦(一進一退続く) »