VBでエクセルVBAを登録

解決


特殊かな  2004-01-14 00:03:29  No: 81414

VBプログラムからエクセル文書を作成しています。
やりたいことは、グラフのシートを作成、そのグラフを回転させるため、
ボタンを作成、ボタンにマクロ名称を設定し、マクロを登録することです。

グラフの作成、ボタンの作成はできたのですが、マクロが登録できません。

ちなみに、作成されたエクセル文書からVBEを起動し、マクロをインポート
すれば動作するのは確認できています。

なんとか、VBプログラムからマクロの登録までできないものでしょうか?


特殊かな  2004-01-14 03:10:53  No: 81415

ちなみに、あまりやりたくなかった方法ですが、テンプレートにてマクロを
記述しておき、エクセル文書作成時にテンプレートを利用して作成しています。
とりあえず、目的は達成できているのですが、ぜひ、VBからエクセル文書へ
マクロ記述を行ないたいです。
よろしくお願いします。


魔界の仮面弁士  2004-01-14 04:57:51  No: 81416

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 プロジェクトへのアクセスを信頼する]を有効にしておく必要があります。


特殊かな  2004-01-14 07:16:39  No: 81417

できました。
この方法で作成してみます。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加