Microsoft Access VBA - ユーザーが作成したヘルプを表示する方法
◆概要
この資料は、Microsoft Accessで作成したアプリケーションにヘルプ システムを実装する方法を記載しています。
◆内容
Windows API の WinHelp() 関数に hWndAccessApp という引数を指定して使用すると、アプリケーションのヘルプを表示することができます。
この機能を実装するには、次の操作を行う必要があります。
- 使用するフォームの HelpContextID プロパティおよび HelpFile プロパティに有効な Windows ヘルプ ファイルを設定して、作業用のヘルプ システムを作成します。
- ヘルプ ファイルを開くユーザー定義関数を呼び出すように、F1 キーをリダイレクトします。.
以下の手順では、ヘルプ ウィンドウを開くユーザー定義関数を作成する方法と、F1 キーをリダイレクトする方法を説明します。
1.モジュールを作成し、宣言 セクションに次の行を入力します。
Option Compare Database Declare Function WinHelp Lib "user32" Alias "WinHelpA" _ (ByVal hwnd As Long, _ ByVal lpHelpFile As String, _ ByVal wCommand As Long, _ ByVal dwData As Long) As Long Public Const HELP_CONTEXTPOPUP = &H8&2.以下のプロシージャを入力します。
Public Function ShowHelpIndex() '[トピックの検索]ダイアロゴボックスの表示 Dim Result Result = WinHelp(hWndAccessApp, "C:\test.hlp", 11, 0) End Function
3.F1 キーをリダイレクトするため AutoKeys という名前で次のようなマクロを作成します。
(1)新しいマクロを作成します。(2)新規マクロが開いたら、Accessのメニューの[表示]-[マクロ名]でマクロ名を表示させます。
(3)次のように入力します。
マクロ名:{F1}
アクション:プロシージャの実行
プロシージャー名:ShowHelpIndex()
(4)作成したマクロをAutoKeysという名前で保存します。
アプリケーションを実行し、F1キーを押すと指定したヘルプが表示されます。
◆実行結果
◆ポップアップ形式のヘルプウィンドウを表示するには
HELP_CONTEXTPOPUP オプションでヘルプを表示する影付きのポップアップ ウィンドウを開きます。
これは、ちょうどWinhelpの元データであるリッチテキストファイルに一本下線を引いた場合に表示されるポップアップが表示されるようなものです。
この方法では、ポップアップ形式のヘルプ ウィンドウから他のヘルプ トピックへのジャンプまたは分岐はできません。
上記の手順との違いは、手順2のShowHelpIndexの代わりに以下のプロシージャを記述し、手順3のプロシージャ名をHelp32() とするだけです。
Function Help32() As Boolean On Local Error GoTo Help32_Err Dim Cid As Long, Result As Long On Error Resume Next ' Get the HelpContextID of the active control. ' The error is 2474 if no control is active. Cid = Screen.ActiveControl.HelpContextId If Cid = 0 Then ' There is no control context ID, so check the form and get ' the HelpContextID of the active form. ' The error is 2475 if no form is active. Cid = Screen.ActiveForm.HelpContextId End If ' If there is a context ID, open the Help file with context. ' Specify your custom Help file for the second argument. If Cid > 0 And Cid < 32767 Then Result = WinHelp(Application.hWndAccessApp, "C:\test.Hlp", _ HELP_CONTEXTPOPUP, Cid) Help32 = True End If Help32_End: Exit Function Help32_Err: MsgBox Err.Description Resume Help32_End End Function
◆実行結果
参考:
Microsoft サポートオンライン How to Create ポップアップ状況依存のヘルプ (95/97)