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 fileRick 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: