2010/11/11

access2010 access2007 Runtimeモード/Runtime環境だけ実行

現在、RuntimeモードもしくはRuntime環境で作動しているかは、SysCmd(acSysCmdRuntime) で情報を得ることができるから、これを起動時に確認すればよいということ。だけど、SysCmd関数はマクロ内で直接使用できない場合がほとんどなので、これをユーザ関数化しておく。
Option Compare Database
Option Explicit

Function IsRuntime() As Boolean
    IsRuntime = SysCmd(acSysCmdRuntime)
End Function
ここで、考えるシナリオが2つ、いずれも、信頼できる場所に無いなどセキュリティ関係。
  • Runtime版での実行
  • 製品版での実行
  1. Runtime版の場合、セキュリティに関する通知が出現しても、OK押下でVBAコードの実行が許可されるから問題はなさそう。
  2. 製品版の場合、セキュリティの警告が表示されつつもファイルは開いてしまう。その状態ではVBAコードが実行されない。これは、ちょっと困る。
これについては、起動時にCurrentProject.IsTruetedプロパティを参照し、ユーザ定義関数IsRuntimeが実行できる状態にあるかを確認する。

リボンカスタマイズとチョイ悪社員対策(AllowBypasskeyやaccde化/各種オプションの設定)は必要に応じて。

0 件のコメント: