「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」オプションが有効になっているかどうかを起動時にチェックするコードがあります。起動時にVBAからマクロセキュリティを開く
有効になっていない場合、ユーザーに簡単にアクセスできるようにマクロセキュリティ設定を開くためのプログラムが必要です。
ほとんどの場合、これを行うコードを作成しましたが、回避方法がわからないという問題が発生しました。次のように
コードは次のとおりです。
Private Sub Workbook_Open
If Not VBATrusted() Then
MsgBox "Trust access to the VBA project object model is not enabled" & vbNewLine & vbNewLine & _
"Please allow access by ticking the checkbox in the window that appears after clicking Ok"
Application.CommandBars.ExecuteMso ("MacroSecurity")
End If
End Sub
Function VBATrusted() As Boolean
On Error Resume Next
VBATrusted = (Application.VBE.VBProjects.Count) > 0
End Function
このコードは、その仕事をして、マクロ設定がデフォルトにしない限り、私はマクロをアクティブにしてからランを取得した場合には、「通知にすべてのマクロを無効にします」 -2147467259(80004005)オブジェクト '_CommandBars'の 'ExecuteMso'メソッドが失敗しました。
このエラーは最初の起動時に発生します。連続した起動時にマクロをアクティブにする必要はないため、ファイルの場所。
私は2秒間マクロを一時停止しようとしましたが、それは私のために何もしなかったし、エラーを捕らえて再びApplication.CommandBars.ExecuteMso ("MacroSecurity")
行を実行しようとしたエラーハンドラもありませんでした。それは同じエラーで終わった。
エラーがApplication.CommandBars.ExecuteMso ("MacroSecurity")
行にあるとデバッガから通知されますが、そのエラーメッセージではあまり驚くことではありません。
はあなたが火災で 'Application.OnTime'イベントを設定し、2秒を一時停止すると考える代わりにあり2秒? – CLR
私は過去にこのようなことを試みましたが、それは簡単ではありません。なぜなら、悪意のあるコードがユーザーのコンピュータ上で実行されるのを防ぐために難しいことでした。これを行うことが可能だと確信していますが、自分自身で実行可能な解決策を見つけることはできませんでした。 – dwirony
@dwirony以下のいくつかのソリューションを参照してください:) –