Använda HTML-hjälpfiler i Excel

 

Här visas ett flertal tekniker i olika situationer för att visa s k HTML-hjälpfiler i Excel. I vissa situationer kan vi visa hjälpfilen i sin helhet medan vi i andra situationer måste ange ett ID-nummer för ett specifikt avsnitt i hjälpfilen.

Hjälpfiler i HTML-format har filändelsen "chm" och har ersatt det tidigare hjälpfil-formatet "hlp".

Självklart finns det andra tekniska lösningar att tillgå för att ge användarna direkthjälp, inte minst utifrån de möjligheterna som Excel själv erbjuder via arbetsblad, formulär och meddelanderutor mm. För professionella produkter rekommenderas dock att använda sig av HTML-hjälpfiler.

Denna sida har inte som syfte att vara heltäckande varför det längst ned finns att tillgå hänvisningar till ett flertal andra källor på webben där ytterligare fördjupningar kan ske i ämnet.


Ett enkelt sätt att visa en hjälpfil är:

Sub Visa_Hjalpfil()

   Application.Help ThisWorkbook.Path & "\Formel.chm"

End Sub


För att visa en hjälpknapp och öppna en hjälpfil från en meddelande-ruta används följande procedur:

Sub Visa_Meddelande_Hjalp()

   '© 2002 Alla rättigheter XL-Dennis

   MsgBox "Visa hjälpfil", vbYesNo + vbMsgBoxHelpButton, "Hjälp", _

         ThisWorkbook.Path & "\Formel.chm", 1

End Sub


I vissa sammanhang, såsom när vi använder oss av Excel 97, måste vi lösa det mha av Shell-kommandot och programmet HH.exe.

Filen HH.exe återfinns på skilda ställen beroende på vilket operativ system som används. Exemplet nedan visar hur det kan se ut i Windows 2000-miljön.

Sub Visa_Hjalpfil_HHexe()

   '© 2002 Alla rättigheter XL-Dennis

   Dim stSokvag As String

   stSokvag = ThisWorkbook.Path

   Shell "c:\winnt\hh.exe " & stSokvag & "\Formel.chm", vbMaximizedFocus

End Sub


En ytterligare lösning är att använda oss av metoden FollowHyperlink för arbetsböcker.

Nackdelen är dock att det dyker upp en meddelanderuta om att filen som ska öppnas kan innehålla virus.

Sub Visa_Hjalp_Hyperlink()

   '© 2002 Alla rättigheter XL-Dennis

   Dim stSokvag As String

   stSokvag = ThisWorkbook.Path

    ActiveWorkbook.FollowHyperlink _

         Address:=ThisWorkbook.Path & "\Formel.chm", NewWindow:=True

End Sub

 

Vill vi tilldela mha VBA-kod en hjälpfil till VBA-projekt kan det ske på följande sätt:

Sub Visa_Hjalp()

   Application.VBE.ActiveVBProject.HelpFile = ThisWorkbook.Path & "\Formel.chm"

End Sub

Förfarandet motsvarar det manuella förfarandet via kommandot Verktyg | Egenskaper för VBA-projekt | Fliken allmänt i VB-editorn.


Vill vi visa ett  hjälpavsnitt i ett formulär kan följande procedur vara oss behjälplig:

Private Sub cmbHjalp_Click()

   'Här har hjälpfilen tilldelats VBA-projektet och kontrollen tilldelas ett hjälpavsnitt.

   Me.cmbHjalp.HelpContextID = 1

End Sub

 

Följande deklaration och procedurer bildar tillsammans lösningen för att visa ett komplett hjälpsystem, såsom det inbygga systemet i Excel och i t ext R-Verktyg.

Option Explicit

Option Private Module  

Private Const HH_DISPLAY_TOC = &H1

Private Const HH_DISPLAY_INDEX = &H2

Private Const HH_DISPLAY_SEARCH = &H3

'© 1999 - 2002 All rights David Lskey

 Private Type tagHH_FTS_QUERY

   cbStruct As Long

   fUniCodeStrings As Long

   pszSearchQuery As String

   iProximity As Long

   fStemmedSearch As Long

   fTitleOnly As Long

   fExecute As Long

   pszWindow As String

End Type

 

Private Declare Function HTMLHelpStdCall Lib "hhctrl.ocx" _

      Alias "HtmlHelpA" (ByVal hwnd As Long, _

      ByVal lpHelpFile As String, _

      ByVal wCommand As Long, _

      ByVal dwData As Long) As Long

 

Private Declare Function HTMLHelpCallSearch Lib "hhctrl.ocx" _

      Alias "HtmlHelpA" (ByVal hwnd As Long, _

      ByVal lpHelpFile As String, _

      ByVal wCommand As Long, _

      ByRef dwData As tagHH_FTS_QUERY) As Long

 

Public Function ShowContents() As Long  

   ShowContents = HTMLHelpStdCall(0, "R-Verktyg.chm", HH_DISPLAY_TOC, 0)  

End Function

 

Public Function ShowIndex() As Long  

   ShowIndex = HTMLHelpStdCall(0, "R-Verktyg.chm", HH_DISPLAY_INDEX, 0)  

End Function

 

Public Function ShowSearch() As Long  

   Dim HH_FTS_QUERY As tagHH_FTS_QUERY  

   With HH_FTS_QUERY

      .cbStruct = Len(HH_FTS_QUERY)

      .fUniCodeStrings = 0&

      .pszSearchQuery = ""

      .iProximity = 0&

      .fStemmedSearch = 0&

      .fTitleOnly = 0&

      .fExecute = 1&

      .pszWindow = ""

   End With

 

   ShowSearch = HTMLHelpCallSearch(0, "R-Verktyg.chm", _

         HH_DISPLAY_SEARCH, HH_FTS_QUERY)  

End Function

HTML Help Object Library 2.5

David E. Liske har skapat ett objekt-bibliotek som gör att vi kan använda oss av HTML-hjälp i VBA på ett relativt enkelt och strukturerat sätt.  Med biblioteket följer en utförlig hjälp och en Excel-arbetsbok visar på ett flertal möjligheter  - HTML Help Object Library 2.5


HTML Help Tips and Tricks file

Rick Stone´s suveräna lathund om hjälpfiler i Visual Basic - HTML Help Tips and Tricks file
 

Följande webbplatser och artiklar kan vara av intresse: