#441 .CHM形式のヘルプを表示させる方法 VBA、API

旧来の.HLP形式のファイルであれば、フォームの「ヘルプファイル」プロパティや、フォーム/コントロールの「ヘルプコンテキストID」プロパティを使ってノンプログラムでF1キーでそれを開かせることができますが、ここではVBAによるWindows APIを使って.CHM(HTMLヘルプ)形式のヘルプファイルを表示させる方法を紹介します。

まず、標準モジュールに次のようなコードを記述します。これらは、Windows APIのHTMLヘルプ呼び出し関数「HtmlHelp」ならびにそれに渡すコマンドの定数の宣言で、モジュールのDeclarationsセクションに記述します。

'HtmlHelp関数に渡すコマンド
Enum HH_COMMAND
  HH_DISPLAY_TOPIC = &H0
  HH_HELP_FINDER = &H0
  HH_DISPLAY_TOC = &H1
  HH_DISPLAY_INDEX = &H2
  HH_DISPLAY_SEARCH = &H3
  HH_SET_WIN_TYPE = &H4
  HH_GET_WIN_TYPE = &H5
  HH_GET_WIN_HANDLE = &H6
  HH_GET_INFO_TYPES = &H7
  HH_SET_INFO_TYPES = &H8
  HH_SYNC = &H9
  HH_ADD_NAV_UI = &HA
  HH_ADD_BUTTON = &HB
  HH_GETBROWSER_APP = &HC
  HH_KEYWORD_LOOKUP = &HD
  HH_DISPLAY_TEXT_POPUP = &HE
  HH_HELP_CONTEXT = &HF
  HH_TP_HELP_CONTEXTMENU = &H10
  HH_TP_HELP_WM_HELP = &H11
  HH_CLOSE_ALL = &H12
  HH_ALINK_LOOKUP = &H13
End Enum

'Windows APIの宣言
Public Declare Function HtmlHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" _
              (ByVal hwndCaller As Long, ByVal pszFile As String, _
              ByVal uCommand As HH_COMMAND, dwData As Any) As Long



そして、フォーム上で特定のキーが押されたとき、あるいはコマンドボタンのクリック時イベントプロシージャなどを使って、次のコードを実行します。これによってヘルプファイルを表示させることができます。

'APIでヘルプファイルc:\test.chmを表示
If HtmlHelp(0, "c:\test.chm", HH_HELP_CONTEXT, ByVal 2001&) = 0 Then
  MsgBox "ヘルプを表示できません!", vbOKOnly + vbExclamation
End If



※4番目の引数に指定している数値”2001”はc:\test.chmの先頭ページのトピックのマップ番号を表わしています。この数値はヘルプファイルごとに異なりますし、またヘルプファイルの作成者でないと分かりません。HTMLヘルプの作成方法やこの数値に関しては当サイトのAccess Study「Vol.3 HTML Help Workshop入門」を参考にしてみてください。

※上記のヘルプファイル呼び出し用のコードをフォームごとに記述し、さらに”2001”の部分をそれぞれ他のマップ番号にすることによって、フォームごとに同じ.CHMファイル上の異なるページを開くこともできます。
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved