2017-03-01 13 views
0

多くのExcelブックにWorkBook_Open()メソッドを追加する作業があります。私は、必要なコード行でモジュールを追加するスクリプトを書くことができましたが、ブックが開かれたときに自動起動するには、DieseArbeitsmappe(緑色)でそれを必要とします。Excelワークブックにコードを追加するためのVBScript

Project setup

Set xlmodule = objworkbook.VBProject.VBComponents.Add(1) 
strCode = _ 
    "Sub WorkBook_Open()" & vbCr & _ 
    " Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _ 
    "End Sub" 
xlmodule.CodeModule.AddFromString strCode 

これが今の私が持っているコードです。私は間違いがxlmoduleを設定するときに1行目にあると確信していますが、DieseArbeitsmappeへの参照方法はわかりません。あなたの助けを前にありがとう。

答えて

1

最初に、xlmoduleを変数名として使用しないでください。すでにExcelの定数として定義されています。私は代わりにcomponentのようなものを呼ぶだろう。 VBComponentsコレクションには、コンポーネント名またはの序数インデックスのいずれかを受け取るインデクサーがあります。それは通常、直接そのようにイベントハンドラを呼び出すためのベストプラクティスではないということ

Set component = ThisWorkbook.VBProject.VBComponents("DieseArbeitsmappe") 
code = _ 
    "Sub WorkBook_Open()" & vbCr & _ 
    " Application.Run ""'CommonMacro.xlsm'!Workbook_Open""" & vbCr & _ 
    "End Sub" 
component.CodeModule.AddFromString code 

注:お使いの場合には、それだけで名前を使用するのが最も簡単でしょう。機能を再利用する必要がある場合は、ハンドラから取り出してWorkbook_Openを呼び出して、Subを呼び出す必要があります。