Microsoft KB Archive/244224

= BUG: VBA6 Extensibility Library Breaks Code Written for VBA5 Extensibility Library =

Article ID: 244224

Article Last Modified on 10/28/1999

-

APPLIES TO


 * Microsoft Visual Basic for Applications (VBA) Software Development Kit (SDK) 5.0
 * Microsoft Visual Basic for Applications (VBA) Software Development Kit (SDK) 6.0
 * Microsoft Visual Basic for Applications (VBA) Software Development Kit (SDK) 6.1

-



This article was previously published under Q244224



SYMPTOMS
On computers that have both the VBA5 Extensibility library (vbeext1.olb) and the VBA6 Extensibility library (vbe6ext.olb), cross-process automation of the VBA5 Extensibility Object Model fails. In C++ applications, this appears as a failure of a IUnknown::QueryInterface call. In Visual Basic applications, this appears as the following error message:

Run-time error 430 -- "Class does not support Automation or does not support expected interface."

This problem only affects applications writing to the VBA5 Extensibility Model, and not the VBA6 Extensibility Model.



CAUSE
This problem is caused by changes in the type information of the Extensibility Library between VBA5 and VBA6.



RESOLUTION
In order to work around this problem, applications should use late binding to make calls to the VBA5 Extensibility Model. For Visual Basic (VB/VBA) applications, this can be accomplished by changing the declaration for your VBProjects variable from: Dim objVBProjs as VBIDE.VBProjects to Dim objVBProjs as Object For C++ application, this can be accomplished by using the IDispatch interface to search for and Invoke methods.



STATUS
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.



Steps to Reproduce Behavior
To see the problem, add the following code to a Visual Basic project on a computer that has both Office 97 (VBA5) and Office 2000 (VBA6) installed: (Add references to Excel 97 and VBA 5 Extensibility.)

Sub test Dim objVBE As VBIDE.VBE Dim objVBProjs As VBIDE.VBProjects Dim objExcelApp As Excel.Application

Set objExcelApp = New Excel.Application Set objVBE = objExcelApp.VBE ' The following line throws a Run-time error 430. ' Class does not support Automation or does not ' support expected interface. Set objVBProjs = objVBE.VBProjects End Sub To correct the problem, change the code to the following: (Add references to Excel 97 and VBA 5 Extensibility.)

Sub test Dim objVBE As Object Dim objVBProjs As Object Dim objExcelApp As Excel.Application

Set objExcelApp = New Excel.Application Set objVBE = objExcelApp.VBE Set objVBProjs = objVBE.VBProjects End Sub

Keywords: kbbug kbpending KB244224

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.