2
votes

I have a reference to the Microsoft Scripting Runtime (scrrun.dll) in one of my Access projects. If I open the object browser in VBA (by pressing F2) and choose 'Scripting' from the library dropdown it shows me all of the properties, functions, etc. for the Scripting library. If I choose one of these functions and then click on the help button (with the yellow question mark) it opens a help window with the title of 'Microsoft Visual Basic Help.'

It acts like it is unable to find the help file for this library. I can manually find the help file on my computer at the following location: "C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6\1033\VBLR6.CHM". (Note: I have 64-bit Win 7, thus the '(x86)' in the Program Files folder name.)

I tried copying the help file to the following locations with no luck: "C:\Windows\Help\VBLR6.CHM" "C:\Windows\SysWOW64\VBLR6.CHM" (I believe SysWOW64 folder is the Win7 64-bit equivalent of C:\Windows\System32)

I have had this same problem with other referenced libraries as well, so I'm looking for some kind of generic solution. I'm hoping there is some way to specify a location for the help file of a particular reference, or something else along those lines.

1
Not sure why you need to have the help file automatically linked. I never use references for anything but the basic 3 Access references, so I never have the help files automatically available. When I need to know something about one of those libraries, I may create a reference in order to use the object browser, but that seems good enough for my purposes. While VBLR6 does have help on the scripting object, I don't know that there's anywhere that this is indicated. Indeed, I have no idea how Access knows which help file to use when the reference points to a DLL and not an OLB file. - David-W-Fenton
Just a followup after poking around the registry: if you search for DAO360.CHM you find some cryptic ClassIDs that seem to create the connections for DAO's help file in Access. It looks like there's a REG_MULT_SZ value with "vUpAVJ(8A$!!!!!MKKSkGimme_OnDemandData<AccessHelpFiles vUpAVN)8A$!!!!!MKKSkGimme_OnDemandData<VBAHelpFiles" as the data for each of the help files linked to Access. Perhaps you could create a key for the VBLR6.CHM and copy the data from the DAO help file key and get it to link that way. Also, what I pasted above may be for the wrong Access version (I have 3 installed). - David-W-Fenton
David, Thanks for your help. Your comments got me thinking at progressively lower levels until I found a solution. - mwolfe02

1 Answers

2
votes

Copy VBLR6.CHM to "C:\Program Files (x86)\Microsoft Office\Office10\1033\VBENLR98.CHM"

That's the short answer for this specific case...here's how to get there which may be useful for getting other help files associated:

  1. Download Process Monitor (currently hosted here: http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx or do a Google search for Process Monitor)
  2. Run Process Monitor with the following filter: 'Process Name' 'is' MSOHelp.exe 'include'
  3. Open object browser in VBA
  4. Choose the library (Scripting in this case)
  5. Choose any function, property, or event in the library and click on the yellow question mark (this should open an empty window with the title Microsoft Visual Basic Help)
  6. Go back to Process Monitor and scroll all the way to the bottom of the list; make sure the Path and Result columns are displayed
  7. There should be dozens of 'PATH NOT FOUND' and 'NAME NOT FOUND' Results in the list. For each one of these results, there should be a corresponding Path where MSOHelp was looking for the help file. Choose any one of these and create a file with that path name. I chose to create a copy of the help file from its original location to the new spot and rename it to match what MSOHelp was looking for.

My best guess is that the scrrun.dll contains the name of the help file and over the years the dll stayed the same but the help file was renamed, modified, etc.