Ik wil graag met [F1] een help bestand aanroepen.
Met Lisp gaat dat als volgt:
(setfunhelp "c:testcommando" "Helpbestand" "topicinhelpbestand")
Dit gaat helemaal naar wens :D
MAAR :? ...
Als ik met Lisp een VBA-macro aanroep bv:
(command "-vbarun" (strcat path "VBAmacro.dvb!Module.Subroutine"))
Dan is het laatste commando in Acad: VBARUN, en geeft het daar de help bij.
Mijn vraag is dan ook hoe kun je tijdens het uitvoeren van een VBA-macro een topic in een eigen help bestand aanroepen met [F1] :vraagteken:
Eddy,
http://msdn.microsoft.com/en-us/library/aa140546(v=office.10).aspx (http://msdn.microsoft.com/en-us/library/aa140546(v=office.10).aspx)
kun je met bovenstaande link iets?
groeten
stephan
Bedankt Stephan,
Maar deze had ik zelf ook al gevonden en doet niet wat ik wil.
Wel als ik een Form (venster) gebruik, dan kan ik dit wel gebruiken.
Wat ik wil is dus zonder Form, alleen via de commandline.
Eigenlijk een vangfunctie voor "keydown".
En dan de ingedrukte toets opvragen.
Als ik dat weet kan ik de help starten als het de [F1] is.
Ik heb iets gevonden... maar kan er nog niet veel mee omdat het in een loop zit, maar het werkt wel als je op [F1] drukt.
Wie kan mij verder helpen, of in de goede richting sturen?
Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
Private Const VK_RMC = KeyCodeConstants.vbKeyF1
Private Sub Test_F1()
Do
If GetAsyncKeyState(VK_RMC) <> 0 Then
Debug.Print VK_RMC
MsgBox "Hier moet het aanroepen van de help komen i.p.v deze MsgBox."
Exit Do
End If
Loop
End Sub
Eddy,
Ik heb ook nog wat verder gekeken en heb de volgende link gevonden
http://www.helpscribble.com/vb.html (http://www.helpscribble.com/vb.html)
Hier vind je 2 modules die je kunt gebruiken voor het oproepen van je help bestanden (.hlp of .chm)
'aanroep van je functies
' ByVal CLng(1234) is de het indexnummer van het help onderwerp
WinHelp(AcadApplication.HWND, <pad naar je hlp bestand>, HELP_CONTEXT, ByVal CLng(1234))
'Aanroep voor chm bestanden
HtmlHelp(AcadApplication.HWND, <pad naar je hlp bestand>, HH_HELP_CONTEXT, ByVal CLng(1234))
hopelijk lukt het hiermee je beoogde functionaliteit te maken
groeten
stephan
Stephan,
Ik heb gedaan wat op die site staat maar de code die daar staat is voor "vb" en niet voor "vba".
Nog geprobeerd om het aan te passen maar ik kom er niet uit.
Toen dacht ik als ik het path van de help verander ben ik er ook (tot het mis gaat met een error).
Maar ben er zeker NIET gelukkig mee, maar krijg wel mijn help-file te zien alleen niet het item waar het om gaat.
Hier de manier die ik vond:
Dim oldHelp
oldHelp = ThisDrawing.Application.Preferences.Files.HelpFilePath
ThisDrawing.Application.Preferences.Files.HelpFilePath = "X:Map_voor_HelpFile" & "MijnHelp.chm"
Later moet dan het path weer terug gezet worden naar "oldHelp"
ThisDrawing.Application.Preferences.Files.HelpFilePath = oldHelp
Als iemand een ander (dus beter idee) heeft graag... :D
Misschien dan ook met voorbeeld code die ik kan gebruiken.
In lisp is dit mogelijk:
(startapp "hh.exe C:\\Program Files\\Bricsys\\Bricscad V11\\Help\\en_US\\Bricscad-CmdRef.chm::/F/FlatShot.htm")
Er wordt gebruik gemaakt van de 'command line switches' van hh.exe.
De code op de site kun je ook gebruiken in vba. De bas bestanden kun je in laden in je vba project. Op die manier kun de code gebruiken. Ik had de aanroepen al in mijn vorige antwoord voor je aangepast.
Betere voorbeelden heb ik niet voor je kunnen vinden.
succes stephan
Citaat van: sschevers op do 15 09 2011, 10:58:54
De code op de site kun je ook gebruiken in vba. De bas bestanden kun je in laden in je vba project. Op die manier kun de code gebruiken. Ik had de aanroepen al in mijn vorige antwoord voor je aangepast.
Betere voorbeelden heb ik niet voor je kunnen vinden.
succes stephan
Maar er verschijnen wel errors die eerst uit de weg geruimd moeten worden in die .bas files.
Voorbeeld:
rcWindowPos As RECT
Dat "... as RECT" snapt mijn vba niet. Ik heb hier een variant van gemaakt.
Jou code heb ik als volgt aangepast:
Dim HelpFilePath As String
HelpFilePath = "U:\Acad_2010\Lisp\" & "Tools Help.chm"
'aanroep van je functies
' ByVal CLng(1234) is de het indexnummer van het help onderwerp
Call WinHelp(AcadApplication.hwnd, HelpFilePath, HELP_CONTEXT, ByVal CLng(1234))
'Aanroep voor chm bestanden
Call HTMLHelp(AcadApplication.hwnd, HelpFilePath, HH_HELP_CONTEXT, ByVal CLng(1234))
Als ik er geen "Call" voor zet dan kan vba de "WinHelp" en de "HTMLHelp" niet vinden.
Ik krijg hier mee nog steeds de "Acad 2010 Help", en niet mijn "Tools Help.chm".
Citaat van: roy_043 op do 15 09 2011, 10:09:12
In lisp is dit mogelijk:
(startapp "hh.exe C:\\Program Files\\Bricsys\\Bricscad V11\\Help\\en_US\\Bricscad-CmdRef.chm::/F/FlatShot.htm")
In Lisp had ik al dit:
(setfunhelp "c:testcommando" "Helpbestand" "topicinhelpbestand")
Maar dat is het probleem niet.
Ik heb nauwelijks kennis van VBA, maar ik zat aan deze pseudo code gebaseerd op jouw bijdrage #3 te denken:
Private Sub Test_F1()
Do
If GetAsyncKeyState(VK_RMC) <> 0 Then
VertaalDitNaarVBA: (startapp "hh.exe C:\\Program Files\\Bricsys\\Bricscad V11\\Help\\en_US\\Bricscad-CmdRef.chm::/F/FlatShot.htm")
End If
Loop
End Sub
Citaat van: roy_043 op do 15 09 2011, 11:59:33
Ik heb nauwelijks kennis van VBA, maar ik zat aan deze pseudo code gebaseerd op jouw bijdrage #3 te denken:
Private Sub Test_F1()
Do
If GetAsyncKeyState(VK_RMC) <> 0 Then
VertaalDitNaarVBA: (startapp "hh.exe C:\\Program Files\\Bricsys\\Bricscad V11\\Help\\en_US\\Bricscad-CmdRef.chm::/F/FlatShot.htm")
End If
Loop
End Sub
Oh, oke. Maar dit zit in een "Do .... Loop".
Deze in de uitvoering wacht vba op de [F1]- toets.
Maar wat als de gebruiker geen "help" nodig heeft... dan moet hij/zij gewoon verder kunnen werken.
Anders krijg je zo iets als:
"Druk op F1 om verder te gaan." Waarna de help opent en je dan pas verder kunt.
Voor de gebruikers niet echt handig en voor mij niet iets wat ik wil.
Het is alweer een poosje geleden maar ik zit weer te stoeien met mijn helpbestand.
Ik heb de volgende code geprobeerd:
(setfunhelp "c:Xreflijst" "http://www.eddylucas.co.nf/Xreflijst.htm")
Dit werkt wel maar zonder css in het normale acadhelp-venster.
Maar ik wil het op de server (P-schijf) van ons bedrijf zetten en niet uploaden met ftp.
Nu zou ik het volgende willen gebruiken maar dit werk niet.
(setfunhelp "c:Xreflijst" "P:/help/Xreflijst.htm")
Maar als ik het op mijn eigen D-schijf zet gaat het in eens wel weer en met css:
(setfunhelp "c:Xreflijst" "D:/help/Xreflijst.htm")
Iemand een idee hoe dit op te lossen?
Eddy,
probeer het volgende eens in vba:
Shell "HH <pad naar chm>", vbNormalFocus
toch nog even aan het zoeken geweest
http://msdn.microsoft.com/en-us/library/office/aa164218(v=office.10).aspx
stephan
Bedankt voor je reactie Stephan, maar dit wil ik niet in VBA oplossen.
Als ik (setfunhelp "c:Xreflijst" "D:/help/Xreflijst.htm") gebruik dan gaat het goed.
Maar het is de bedoelling dat het hier op de server geplaatst wordt, op de P-schijf.
Verschillende kantoren, dus verschillende locaties, krijgen s'nachts een update van deze P-schijf.
Als ik het netwerkpath op geef werkt het ook.
Dit laatste lijkt een oplossing, maar handiger is een schijf aanwijzen zoals "P:\" of in lisp "P:/" ("P:\\")