<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2722.900" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>I should have also written that all MS Office Type
Libraries starting MS Office97 (or even Office95?) have the same
typelib GUID {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52} but different
versions:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>// typelib filename: MSO97.DLL</FONT></DIV>
<DIV><FONT face=Arial size=2>[<BR>
uuid(2DF8D04C-5BFA-101B-BDE5-00AA0044DE52),<BR> version(2.0),<BR>
helpstring("Microsoft Office 8.0 Object Library"),</FONT></DIV>
<DIV><FONT face=Arial size=2>...</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>// typelib filename: MSO9.DLL</FONT></DIV>
<DIV><FONT face=Arial size=2>[<BR>
uuid(2DF8D04C-5BFA-101B-BDE5-00AA0044DE52),<BR> version(2.1),<BR>
helpstring("Microsoft Office 9.0 Object Library"),</FONT></DIV>
<DIV><FONT face=Arial size=2>...</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>// typelib filename: MSO.DLL</FONT></DIV>
<DIV><FONT face=Arial size=2>[<BR>
uuid(2DF8D04C-5BFA-101B-BDE5-00AA0044DE52),<BR> version(2.2),<BR>
helpstring("Microsoft Office 10.0 Object Library"),</FONT></DIV>
<DIV><FONT face=Arial size=2>...</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Therefore the info about location of installed MS
Office object libraries and typelibs is stored under:</FONT></DIV><FONT
face=Arial size=2>
<DIV><BR>[HKEY_CLASSES_ROOT\TypeLib\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}]</DIV>
<DIV> </DIV>
<DIV>HTH,</DIV>
<DIV>Shamil</DIV>
<DIV></FONT> </DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=shamil@smsconsulting.spb.ru
href="mailto:shamil@smsconsulting.spb.ru">Shamil Salakhetdinov</A> </DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A title=accessd@databaseadvisors.com
href="mailto:accessd@databaseadvisors.com">accessd@databaseadvisors.com</A>
</DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Wednesday, February 05, 2003 12:56
PM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [AccessD] Office 10.0
Library vs. Office 9.0 Library</DIV>
<DIV><FONT face=Arial size=2></FONT><FONT face=Arial size=2></FONT><BR></DIV>
<DIV><FONT face=Arial size=2>Rocky,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>CommandBars is a property of
Access.Application object (default instance) - so there is no any need to
search for "(hundreds) of registered references" - the code just gets the
object ref (memory address) of already created collection
Access.Application.CommandBars . Commandbars is a collection i.e. it supports
COM's standard Collection interface(_NewEnum, Add, Remove, Item, Count)
+ it has its own interface including FindControl method. Because of late
binding FindControl is called via IDispatch COM interface of CommandBars
coclass. IDispatch interface has GetIdsOfNames method, which is used to find
the numeric Id of FindControl method. The info for IDispatch is stored in type
library - for CommandBars this typelibrary is included into MS Office object
library. Each version of MS Access "knows" its own version of MS Office
type library - e.g. here is how MS Access 2000 "gets knowledge" that its
Commandbars object is from MS Office 9.0 Object
library:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>// typelib filename: msacc9.olb</FONT></DIV>
<DIV><FONT face=Arial size=2>[<BR>
uuid(4AFFC9A0-5F99-101B-AF4E-00AA003F0F07),<BR> version(9.0),<BR>
helpstring("Microsoft Access 9.0 Object Library"),<BR>
helpfile("acmain9.chm"),<BR> helpcontext(00000000)<BR>]<BR>library
Access<BR>{<BR> // TLib : // TLib :
Microsoft Visual Basic for Applications Extensibility 5.3 :
{0002E157-0000-0000-C000-000000000046}<BR>
importlib("VBE6EXT.OLB");<BR> // TLib : Microsoft ActiveX
Data Objects 2.1 Library :
{00000201-0000-0010-8000-00AA006D2EA4}<BR>
importlib("msado21.tlb");<BR> // TLib : Microsoft Office 9.0
Object Library : {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}<BR>
importlib("MSO9.DLL");<BR></FONT><FONT face=Arial size=2>....</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>- importlib("MSO9.DLL") statement creates this
static link in MS Access Object Library. IDispatch uses MS Office Object
Library GUID ({2DF8D04C-5BFA-101B-BDE5-00AA0044DE52} for MS Office 9)
statically written to MS Access object library to get (via system registry)
location of MS Office Object library file, loads this object library and its
typelib and finds numeric ID of FindControl method. </FONT><FONT face=Arial
size=2>Then marchalling is used to create parameters array and Fincontrol
method is called using Invoke method of IDispatch interface... (It may happen
that MS Office type library gets preloaded on MS Access start-up - I don't
know these internal details but the nature of COM is to activate a
feature/create object instances on first call to them only not in advance - so
I guess that MS Office Object library is loaded when CommandBars collection is
created during MS Access start-up or on first call to CommandBars collection,
which can be the call from your code...)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>It looks a little bit complicated but it doesn't
take that much time to care about or see any difference with early binding for
two late bound calls as in your case...</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Hope this explains some late binding internal
details,</FONT></DIV>
<DIV><FONT face=Arial size=2>Shamil</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV>----- Original Message ----- </DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=bchacc@san.rr.com href="mailto:bchacc@san.rr.com">Rocky Smolin -
Beach Access Software</A> </DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A
title=accessd@databaseadvisors.com
href="mailto:accessd@databaseadvisors.com">accessd@databaseadvisors.com</A>
</DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Wednesday, February 05, 2003
12:21 AM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [AccessD] Office 10.0
Library vs. Office 9.0 Library</DIV>
<DIV><BR></DIV>
<DIV><FONT face=Arial size=2>Shamil and Bryan:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Thanks so much. That was way too easy,
:)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>But how does the program know which library to
go to without searching all of those (hundreds) of registered
references?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>I don't notice any pause at all.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Best,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Rocky Smolin<BR>Beach Access
Software</FONT></DIV>
<DIV> </DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=shamil@smsconsulting.spb.ru
href="mailto:shamil@smsconsulting.spb.ru">Shamil Salakhetdinov</A> </DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A
title=accessd@databaseadvisors.com
href="mailto:accessd@databaseadvisors.com">accessd@databaseadvisors.com</A>
</DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Tuesday, February 04, 2003
12:11 PM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [AccessD] Office 10.0
Library vs. Office 9.0 Library</DIV>
<DIV><BR></DIV>
<DIV><FONT face=Arial size=2>> How can I convert this to late
binding?</FONT></DIV>
<DIV><FONT face=Arial size=2>Rocky,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>This is easy - just use this
code:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Dim cbc As Object ' CommandBarControl<BR>Set
cbc = CommandBars("Menu Bar").FindControl(ID:=4,
recursive:=True)<BR>cbc.Enabled = False</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>and remove the reference to the MS
Office object library.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>HTH,</FONT></DIV>
<DIV><FONT face=Arial size=2>Shamil</FONT></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=bchacc@san.rr.com href="mailto:bchacc@san.rr.com">Rocky Smolin
- Beach Access Software</A> </DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A
title=accessd@databaseadvisors.com
href="mailto:accessd@databaseadvisors.com">accessd@databaseadvisors.com</A>
</DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Tuesday, February 04, 2003
10:35 PM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [AccessD] Office 10.0
Library vs. Office 9.0 Library</DIV>
<DIV><BR></DIV>
<DIV><FONT face=Arial size=2>Shamil:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>I'm having a little trouble finding enough
help in Help and the ADH to figure out how to do late binding. I'm
currently using the following three lines to turn off the print
button:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Dim cbc As CommandBarControl<BR>Set cbc =
CommandBars("Menu Bar").FindControl(ID:=4,
recursive:=True)<BR>cbc.Enabled = False<BR></FONT></DIV>
<DIV><FONT face=Arial size=2>How can I convert this to late
binding?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>(BTW, I'm trying to repair my Office
installation now. Maybe it will get rid of Version 10 and replace
it with Version 9 which will solve the problem.)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Best,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Rocky</FONT></DIV>
<DIV><FONT face=Arial size=2> </DIV></FONT>
<BLOCKQUOTE dir=ltr
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=shamil@smsconsulting.spb.ru
href="mailto:shamil@smsconsulting.spb.ru">Shamil Salakhetdinov</A>
</DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A
title=accessd@databaseadvisors.com
href="mailto:accessd@databaseadvisors.com">accessd@databaseadvisors.com</A>
</DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Tuesday, February 04, 2003
10:25 AM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [AccessD] Office
10.0 Library vs. Office 9.0 Library</DIV>
<DIV><BR></DIV>
<DIV><FONT face=Arial size=2>Rocky,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>The only stable solution I know is to use
late binding - then you'll not need a reference to Office 9 or
10.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>HTH,</FONT></DIV>
<DIV><FONT face=Arial size=2>Shamil</FONT></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=bchacc@san.rr.com href="mailto:bchacc@san.rr.com">Rocky
Smolin - Beach Access Software</A> </DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A
title=AccessD@databaseadvisors.com
href="mailto:AccessD@databaseadvisors.com">AccessD@databaseadvisors.com</A>
</DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Tuesday, February 04,
2003 7:30 PM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> [AccessD] Office 10.0
Library vs. Office 9.0 Library</DIV>
<DIV><BR></DIV>
<DIV><FONT face=Arial size=2>Dear List:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>In order to turn off the print button
on the file menu I used the CommandBar object which required the
Office Library. I have Version 10.0. My customer,
however, has Version 9.0. He doesn't have 10.0. I don't
have 9.0. So now in the update we have to uncheck the 10.0
(missing) library, and check the 9.0 library. Awkward phone support
at best.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>What's the best way around this?
Can I get 9.0? Or can he get 10.0? Or what?
They're running Office 2000. Pro, I believe.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>MTIA</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Rocky Smolin<BR>Beach Access
Software</FONT></DIV>
<DIV><FONT face=Arial
size=2></FONT> </DIV></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>