レジストリ操作 |
[VBA マクロの警告] の回避
使用例
マクロ セキュリティ警告を非表示にする。
'指定されたレジストリキーを開きます。 Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" ( _ ByVal hKey As Long, _ ByVal lpSubKey As String, _ ByVal ulOptions As Long, _ ByVal samDesired As Long, _ phkResult As Long) As Long '指定されたレジストリキーに所属する、 '指定された 1 つのレジストリエントリのデータとデータ型を設定 Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" ( _ ByVal hKey As Long, _ ByVal lpValueName As String, _ ByVal Reserved As Long, _ ByVal dwType As Long, _ lpData As Any, _ ByVal cbData As Long) As Long '指定されたレジストリキーのハンドルを閉じる。 Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Private Const HKEY_CURRENT_USER = &H80000001 Private Const ERROR_SUCCESS = 0& Private Const KEY_SET_VALUE = &H2 Private Const REG_DWORD = 4 Sub セキュリティ警告解除() Dim varVersion As Variant Dim lngKey As Long Dim lngNewData As Long Dim lngValue As Long Dim strRegKey, strSubKey As String 'Accessのバージョンを調べます。 varVersion = SysCmd(acSysCmdAccessVer) 'Access2003は11.0,Access2007は12.0,Access2010は14.0を返します。 strRegKey = "Software\Microsoft\Office\" & varVersion & "\Access\Security\" Select Case varVersion Case "11.0" strSubKey = "Level" Case "12.0", "14.0" strSubKey = "VBAWarnings" End Select 'レジストリキーをオープン If RegOpenKeyEx(HKEY_CURRENT_USER, strRegKey, 0, _ KEY_SET_VALUE, lngKey) = ERROR_SUCCESS Then lngNewData = 1 RegSetValueEx lngKey, strSubKey, 0&, REG_DWORD, lngNewData, Len(lngValue) RegCloseKey lngKey 'レジストリキーをクローズ End If End Sub '--- VBAWarnings の値 --- 'VBAWarnings=1 [マクロに対しセキュリティ チェックを行わない] 'VBAWarnings=2 [すべてのマクロについて、セキュリティ バーで警告を表示する] 'VBAWarnings=3 [デジタル署名付きのマクロについてのみ、セキュリティ バーで警告を表示する] 'VBAWarnings=4 [警告を表示せずにすべてのマクロを無効にする]
コンポーネントオブジェクトのレジストリ登録
使用例
'コンポーネントオブジェクトをMY.dllと仮定します。 Sub COMレジ登録() Dim objWscript As Object Set objWscript = CreateObject("Wscript.Shell") objWscript.Run "cmd /k CD C:\..\ & regsvr32 MY.dll & exit", 0, True Set objWscript = Nothing End Sub Sub COMレジアンインストール() Dim objWscript As Object Set objWscript = CreateObject("Wscript.Shell") objWscript.Run "cmd /k CD C:\..\ & regsvr32 /u MY.dll & exit", 0, True Set objWscript = Nothing End Sub