VBプログラムからエクセル文書を作成しています。
やりたいことは、グラフのシートを作成、そのグラフを回転させるため、
ボタンを作成、ボタンにマクロ名称を設定し、マクロを登録することです。
グラフの作成、ボタンの作成はできたのですが、マクロが登録できません。
ちなみに、作成されたエクセル文書からVBEを起動し、マクロをインポート
すれば動作するのは確認できています。
なんとか、VBプログラムからマクロの登録までできないものでしょうか?
ちなみに、あまりやりたくなかった方法ですが、テンプレートにてマクロを
記述しておき、エクセル文書作成時にテンプレートを利用して作成しています。
とりあえず、目的は達成できているのですが、ぜひ、VBからエクセル文書へ
マクロ記述を行ないたいです。
よろしくお願いします。
ApplicationオブジェクトのVBEプロパティを使います。
「VBE オブジェクト」について調べてみてください。
参照設定:
[Microsoft Excel ** Object Library]
[Microsoft Visual Basic for Application Extensiblity **]
Dim oXL As Excel.Application
Dim oVBE As VBIDE.VBE
Dim oMod As VBIDE.VBComponent
Dim oCode As VBIDE.CodeModule
Set oXL = CreateObject("Excel.Application")
oXL.Workbooks.Add '
oXL.Visible = True
Set oVBE = oXL.VBE
Set oMod = oVBE.VBProjects(1).VBComponents.Add(vbext_ct_StdModule)
Set oCode = oMod.CodeModule
'oCode.InsertLines 1, "Option Explicit"
oCode.InsertLines 2, "Public Sub Test()" & vbCrLf _
& " MsgBox ThisWorkbook.Name" & vbCrLf _
& "End Sub"
Set oCode = Nothing
Set oMod = Nothing
Set oVBE = Nothing
Set oXL = Nothing
ただし、Excel 97等の古いバージョンであれば上記だけで良いのですが、Excel 2002等を使っている場合は、これだけでは動作しない可能性があります。最近のバージョンでは、マクロウィルスへの対策が強化されているため、既定のセキュリティ設定ですと、VBEプロパティへのアクセスは許可されていません。それらのバージョンを使っている場合は、Excelの[ツール]-[オプション]設定にて、『セキュリティ』タブから、[Visual Basic プロジェクトへのアクセスを信頼する]を有効にしておく必要があります。
できました。
この方法で作成してみます。
ありがとうございました。
ツイート | ![]() |