| 概要 |
VBAを利用したリボンUIの表示、非表示の切り替え
以前では、ツールバーの表示は、グローバルオプションで、プログラムでコントロールできましたが、Access2007から新しくなったUI、リボンインターフェイスでは
Application.SetOption "Built-In Toolbars Available", True/ False
でツールバーの表示/非表示はできません。
ヘルプを見ても、それらしいのがみつかりません。しかたないので、
APIのSendInputを使って
Ctrl+F1」を送ってやって、切り替えしているだけです。
| ソース |
| Option Compare Database Option Explicit Private Type GENERALINPUT dwType As Long xi(0 To 23) As Byte End Type '===KEYBDINPUT 構造体 Private Type KEYBDINPUT wVk As Integer '仮想キーコード wScan As Integer 'ハードウェアスキャンコード dwFlags As Long 'キーボードの動作を指定するフラグ time As Long 'タイムスタンプ。単位は ms dwExtraInfo As Long '32 ビットの追加情報 End Type '===入力タイプ Private Const INPUT_MOUSE = 0 'マウスイベントを発生 Private Const INPUT_KEYBOARD = 1 'キーボードイベントを発生 Private Const INPUT_HARDWARE = 2 'ハードウェアイベントを発生 '===キーコード 以下は一部 Private Const VK_F1 = &H70 'F1 key Private Const VK_RETURN = &HD 'ENTER key Private Const VK_SHIFT = &H10 'SHIFT key Private Const VK_CONTROL = &H11 'CTRL key Private Const VK_MENU = &H12 'ALT key Private Const VK_V = &H56 'V key '=== Private Const KEYEVENTF_KEYUP = &H2 Private Const KEYEVENTF_EXTENDEDKEY = &H1 'スキャンコードは拡張コード '============ Win32 API =========================== 'キーストローク、マウスの動作、ボタンのクリックをシミュレート Private Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, PINPUTS As GENERALINPUT, ByVal cbSize As Long) As Long 'メモリブロックをコピーする Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) 'キーストロークをシミュレートする Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long Sub SendCtrlF1() Dim GInput(3) As GENERALINPUT 'ストロークによって Dim KInput As KEYBDINPUT 'Press Ctrl KInput.wVk = VK_CONTROL KInput.dwFlags = 0 GInput(0).dwType = INPUT_KEYBOARD Call CopyMemory(GInput(0).xi(0), KInput, Len(KInput)) 'Press F1 KInput.wVk = VK_F1 KInput.dwFlags = 0 GInput(1).dwType = INPUT_KEYBOARD Call CopyMemory(GInput(1).xi(0), KInput, Len(KInput)) 'Release F1 KInput.wVk = VK_F1 KInput.dwFlags = KEYEVENTF_KEYUP GInput(2).dwType = INPUT_KEYBOARD Call CopyMemory(GInput(2).xi(0), KInput, Len(KInput)) ' Release Ctrl KInput.wVk = VK_CONTROL KInput.dwFlags = KEYEVENTF_KEYUP GInput(3).dwType = INPUT_KEYBOARD Call CopyMemory(GInput(3).xi(0), KInput, Len(KInput)) 'Now, finally send the keystrokes Call SendInput(4, GInput(0), Len(GInput(0))) End Sub |
ここに掲載された情報を使用したことによって発生した、いかなる損害に対しても
管理者であるしゃくは一切責任を負いません。