![]() |
Programatic Reference to Libraries
Is it possible to set a reference to a library programmatically like I
can do for an add-in? Thanks in advance for any help. |
Programatic Reference to Libraries
Yes. If you know the name of the library file, you can use code
like the following: ThisWorkbook.VBProject.References.AddFromFile _ Filename:="H:\whatever\typelib.olb" If the typelib has been registered, and you know the GUID and version numbers, you can use code like ThisWorkbook.VBProject.References.AddFromGuid _ GUID:="{ whatever }", Major:=x, Minor:=y -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com "Wayne S." <Wayne wrote in message ... Is it possible to set a reference to a library programmatically like I can do for an add-in? Thanks in advance for any help. |
Programatic Reference to Libraries
This is an old thread, but here goes ...
Is it possible to retrieve the GUID for a a registered application? I need to connect a Visio 2003 macro to Excel. Some of the folks that run the macro have Excel 10, some have Excel 11. I'd rather not count on where they happened to install the file, so I prefer to use addfromguid. But, I can't figure out how to get the GUID on some arbitrary PC elsewhere in the universe. Is there a function that I can feed a string like "Microsoft Excel 10.0 Object Library" and retrieve a GUID that I can then feed to addfrom guid? Thanks! Ed |
Programatic Reference to Libraries
Ed,
Look into using late binding rather than early binding/GUIDs. http://peltiertech.com/Excel/EarlyLateBinding.html Also, if you have to write to the VBA project, the user will have to allow ToolsMacroSecuritytrusted Sources "Trust access to VBA Project". For versions of Excel9.0 NickHK "emel" wrote in message ... This is an old thread, but here goes ... Is it possible to retrieve the GUID for a a registered application? I need to connect a Visio 2003 macro to Excel. Some of the folks that run the macro have Excel 10, some have Excel 11. I'd rather not count on where they happened to install the file, so I prefer to use addfromguid. But, I can't figure out how to get the GUID on some arbitrary PC elsewhere in the universe. Is there a function that I can feed a string like "Microsoft Excel 10.0 Object Library" and retrieve a GUID that I can then feed to addfrom guid? Thanks! Ed |
Programatic Reference to Libraries
Thanks! That's the clearest description of early and late binding that I've
seen. After posting the question, I poked around and came up with a hybrid late / early binding solution that should work on the machines in question - and I don't have to develop with early binding and muck with the code before I release it so that late binding works. If the reference to excel is busted (as seen in the .isbroken property), I late bind an object to whatever excel is installed on the PC, look at the ..path property of the late bound object, build a likely file name for Excel including the path, and use .adddFromFile to add the reference. Once it's added, I can check versions & such for some rassurance that it's going to work. If all that fails to work, then it's no more busted than it was to start with - and I've upheld the "First, do no harm." principal. I suspect if I understood GUID's better, I could go down the .addFromGUID path. But that, I think, is for another day. Ed |
Programatic Reference to Libraries
Chip,
MUST the TypeLib be registered? (I'm assuming not but would like to verify) Also, if applying this technique to MS Access, should the code be put into a Class Module or does it not matter? Further, if a component can be placed in a subfolder and referenced in code, is there much of a performance improvement to write an installer or otherwise get the component registered? Recognizing deployment is to varied environments and versions. Thank you very much. Allen B. "Chip Pearson" wrote: Yes. If you know the name of the library file, you can use code like the following: ThisWorkbook.VBProject.References.AddFromFile _ Filename:="H:\whatever\typelib.olb" If the typelib has been registered, and you know the GUID and version numbers, you can use code like ThisWorkbook.VBProject.References.AddFromGuid _ GUID:="{ whatever }", Major:=x, Minor:=y -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com "Wayne S." <Wayne wrote in message ... Is it possible to set a reference to a library programmatically like I can do for an add-in? Thanks in advance for any help. |
All times are GMT +1. The time now is 05:38 PM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com