Access 2003 on Vista x64

K

KA Spencer

I have several Access applications that run satisfactorily on all x32
versions of Windows and with Access XP (2002), Access 2003, and Access 2007
all installed simultaneously (but in different directories of course). (I am
ignoring the important behavioural differences of Access 2007 from the
others, as they're separate issues).

However, when I install Access 2003 and Access 2007 (in different
directories) on Vista x64 my applications fail with the message:
"The expression On Open you entered as the event property setting produced
the error: Object or class does not support the set of events."
The Help option advises the I should delete the referencing object, but that
would destroy my application!
The application initially calls functions in the User32 library (e.g.
"FindWindow", "SetWindowText", "SetWindowPosition" etc etc) but they all pass
through debug without a problem. Therefore the issue seems to be in the
Form_Activate or Form_Open event in the startup form, but the code there is
absolutely simple.

On investigation I have noted that Access 2003 is in fact referencing the
"Microsoft Access 12.00 Object Library" MSACC.OLB in the Access 2007
directory. However I cannot remove this reference as I am advised that it is
in use. And I cannot add the "Microsoft Access 11.0 Object Library" MSACC.OLB
from the Access 2003 directory to the references as nothing happens when I
select it.

So,
1. Am I right in suspecting the Access 2007 Object Library as the culprit?
2. If so how do I change the reference?
3. If not, any other ideas?

Thanks alot,

Kenneth Spencer
 
K

KA Spencer

Thankyou for the reply Roger.

Further comments (on which I'd be grateful for more advice if you have
any), on the Allenbrowne proposals are:

1. Disabling UAC does work, but is not my preferred workaround for obvious
reasons.
2. The application is run via a VBS script (on a mapped network drive, set
as trusted) to which a shortcut is pointing, but its "Advanced -> Run As
Administrator" tick-box is greyed out, so I have been unable to run the VBS
script in that way. I have tried altering this setting as administrator, but
it remains grey - maybe if we could sort that out I'd have a solution?
3. Editing the registry did not give me a key
"HKEY_CLASSES_ROOT\TypeLib\{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}\9.0 ".

The nearest is
HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}\9.0
and there are many of the form:
HKEY_CLASSES_ROOT\{some
GUID}\TypeLib\{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}\9.0
Do you have any idea whether the Wow6432Node key is the one to set broader
permissions on?

I need all the versions of Office for development and support reasons, and
don't wish to use a VM. It would be so much simpler if Microsoft accepted
that people need to test and develop under many Office versions don't you
think?

Thanks again for your help!

Ken.
 
A

Alex Dybenko

Hi,
I also had this issue, but on vista 32. I think you need to switch off UAC,
else you will get these problems in a future

HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}\9.0
- is a right one for Vista 64, as it uses different registry keys then 32


--
Best regards,
___________
Alex Dybenko (MVP)
http://accessblog.net
http://www.PointLtd.com
 
K

KA Spencer

Thanks for all the help. I think that broadening the permissions to include
domain users on the key:

HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}\9.0

seems to have done the trick for the moment. And I have left UAC switched on.

Incidentally Alex, before I committed to Vista Ultimate x64 (I have an App
that requires 6G of RAM), I had been running Vista Business x32 with Access
2003 and 2007 in situ, and I don't recall encountering the problem. SO maybe
I ws lucky in the order that I did things ... who knows.

Thanks again to all,

Ken
 
Y

Yossi

Hi KA,
Well, I have encountered the exact same problem. I have multiple versions of
Access running on my development machine.
I then installed Office 2007 and the problems started.
You're observation regarding the MSACC.OLB is key.
When I opened my 2003 application I found that the reference was pointing to
the 2007 version of the OLB.
After scowering the internet for a solution and finding all the same fixes
that didnt work for me, I tried the simple solution. I renamed the MSACC.OLB
to MSACC2007.OLB.
When I opened my 2003 Access DB, the hourglass went for a couple of seconds
as it repointed to the 2003 version of the MSACC.OLB.
Now all is well and my 2003 application will run while I have 2007 running
on my development box.
If someone just wrote a VB app to rename the MSACC.OLB file and switch it
back when desired, Access 2003 and 2007 will coexist without this type-lib
problem.
Simple, but it works.
Regards,
Yossi
 
K

KA Spencer

Thanks Yossi for that alternative method of solving this problem. It's always
good to have more than one solution - and your situation seems to be exactly
l;ike mine - i.e. a development machine.

It is a pity that Microsoft don't pay proper attention to this kind of
problem in the first place.

Ken.

Yossi said:
Hi [Ken],
Well, I have encountered the exact same problem. I have multiple versions of
Access running on my development machine.
I then installed Office 2007 and the problems started.
You're observation regarding the MSACC.OLB is key.
When I opened my 2003 application I found that the reference was pointing to
the 2007 version of the OLB.
After [scouring] the internet for a solution and finding all the same fixes
that didnt work for me, I tried the simple solution. I renamed the MSACC.OLB
to MSACC2007.OLB.
When I opened my 2003 Access DB, the hourglass went for a couple of seconds
as it repointed to the 2003 version of the MSACC.OLB.
Now all is well and my 2003 application will run while I have 2007 running
on my development box.
If someone just wrote a VB app to rename the MSACC.OLB file and switch it
back when desired, Access 2003 and 2007 will coexist without this type-lib
problem.
Simple, but it works.
Regards,
Yossi

KA Spencer said:
I have several Access applications that run satisfactorily on all x32
versions of Windows and with Access XP (2002), Access 2003, and Access 2007
all installed simultaneously (but in different directories of course). (I am
ignoring the important behavioural differences of Access 2007 from the
others, as they're separate issues).

However, when I install Access 2003 and Access 2007 (in different
directories) on Vista x64 my applications fail with the message:
"The expression On Open you entered as the event property setting produced
the error: Object or class does not support the set of events."
The Help option advises the I should delete the referencing object, but that
would destroy my application!
The application initially calls functions in the User32 library (e.g.
"FindWindow", "SetWindowText", "SetWindowPosition" etc etc) but they all pass
through debug without a problem. Therefore the issue seems to be in the
Form_Activate or Form_Open event in the startup form, but the code there is
absolutely simple.

On investigation I have noted that Access 2003 is in fact referencing the
"Microsoft Access 12.00 Object Library" MSACC.OLB in the Access 2007
directory. However I cannot remove this reference as I am advised that it is
in use. And I cannot add the "Microsoft Access 11.0 Object Library" MSACC.OLB
from the Access 2003 directory to the references as nothing happens when I
select it.

So,
1. Am I right in suspecting the Access 2007 Object Library as the culprit?
2. If so how do I change the reference?
3. If not, any other ideas?

Thanks alot,

Kenneth Spencer
 
S

Stewart Berman

I have 2000, XP, 2003 and 2007 installed on Windows XP Pro.

When I want to switch to 2000 I run a .cmd that contains:
"c:\program files\microsoft office\office\msaccess.exe" /regserver

If have similar cmd files for XP, 2003 and 2007. It takes a few seconds but all associations and
references are set for the version I want to work with.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top