VB.NETからEXCELのマクロを削除もしくは開放したいのですが?


ゆう  2007-10-30 08:24:48  No: 137994

VB.NETからEXCELのマクロに対してAUTORUNで実行し、実行後にマクロを
削除もしくは、開放したいのですが教えてください。
サイトで探したら以下のコーディングがあったのですがうまく動きません。
以下のエラーがででしまいました。
System.Runtime.InteropServices.COMException - HRESULT からの例外です : 0x800A03EC。

Sub DeleteMacro(ModuleName As String, MacroName As String)
Set Compo = ThisWorkbook.VBProject.VBComponents.Item(ModuleName)
With Compo.CodeModule
StartLineNo = .ProcStartLine(MacroName, vbext_pk_Proc)
LineCount = .ProcCountLines(MacroName, vbext_pk_Proc)
.DeleteLines StartLineNo, LineCount
End With
'Visual Basic Editor が表示されるので非表示にする場合
'Application.VBE.MainWindow.Visible = False
End Sub


魔界の仮面弁士  2007-10-30 10:53:54  No: 137995

> VB.NETからEXCELのマクロに対してAUTORUNで実行し、実行後にマクロを
> 削除もしくは、開放したいのですが教えてください。

マクロ入りブックに、(AUTORUNで)自身を編集させ、その後、
マクロを取り除いて保存したいという事でしょうか。

もしそうなら、それはマクロ入りブック(編集しない)と、
マクロ無しブック(編集用)の 2 つを用意させた方が良いかと。

> 以下のエラーがででしまいました。
マクロウィルスの登場に伴い、セキュリティの観点から、初期状態では、
VBProject や VBE といったオブジェクトへのアクセスは拒否されるように
なっています。(Office 2000 からだったかな?)

呼び出し側からはどうにもならないので、Office 側のセキュリティ設定で、
「Visual Basic プロジェクトへのアクセスを信頼する」のオプションを
変更してみてください。


ゆう  2007-10-30 17:33:17  No: 137996

ありがとうございます。
ちなみにoffice2003です。
office側の設定を変えてやってみます。


スクリプトプログラマ  2007-10-31 03:31:58  No: 137997

呼び出し側からは、レジストリを操作すればよいのでは?

HKEY_CURRENT_USER\Software\Microsoft\Office\バージョン\Excel\Security\AccessVBOM


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

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






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