Expiring Today—Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Error 430: Class does not support Automation or does not support expected interface

Posted on 2006-06-30
3
Medium Priority
?
410 Views
Last Modified: 2013-12-25
Hi,

I have a VB6 Add-In. I've written code to create a menu item on the "Add-Ins" menu and a CommandBar button on the "Standard" toolbar (both coded in the OnStartupComplete event for certain reasons).

The menu item works perfectly so no problem on that front...

However, when I try to add a new Control on the Standard toolbar the program falls over with the error message from the title.

Here's the code I'm using for this purpose:

Dim WithEvents MyButton As CommandBarButton  (declared at class-level in the Connect class)

    Set oCommandBars = VBInstance.CommandBars
    If oCommandBars Is Nothing Then
        ' Outlook has the CommandBars collection on the Explorer object
        Set oCommandBars = VBInstance.ActiveExplorer.CommandBars
    End If
   
    Set oStandardBar = oCommandBars.Item("Standard")
    If oStandardBar Is Nothing Then
        ' Standard bar not found: use the 'Text Editor' toolbar
        Set oStandardBar = oCommandBars.Item("Text Editor")
    End If
       
    ' Ensure that the 'Standard' toolbar is enabled & visible
    oStandardBar.Enabled = True
    oStandardBar.Visible = True
 
    ' In case the button was not deleted, use the exiting one...
    'Set MyButton = oStandardBar.Controls.Item("MyAddIn")
    For I = 1 To oStandardBar.Controls.Count()              
        If oStandardBar.Controls.Item(I).Tag() = "MyAddIn Button" Then
            ' My button's tag was found and hence my button already exists...
            ' Set my button variable to it
            Set MyButton = oStandardBar.Controls.Item(I)
            Exit For
        End If
    Next
   
    '... otherwise, create a new button
    If MyButton Is Nothing Then

        Set MyButton = oStandardBar.Controls.Add(1)      --> this is the statement which generates the error I've mentioned!!!!!!!!!
       
       ...
    End If

Other information...
I'm using:
    VB6 (SP5)
    Office 2003 (v.11)
    Windows XP Pro
The 3 references added automatically by the Add-In project when I created it are:
   Microsoft Office 11.0 Object Library
   Microsoft Add-In Designer
   Microsoft Visual Basic 6.0 Extensibility

Has anyone come across this problem? What's the workaround?

Thanks!



0
Comment
Question by:sterlingdev
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 8

Accepted Solution

by:
hiteshgupta1 earned 1500 total points
ID: 17029752
0
 
LVL 9

Expert Comment

by:lojk
ID: 17037675
are you sure that thte controls collection isnt zero based?

i.e.
For I =  To oStandardBar.Controls.Count()-1

and

 Set MyButton = oStandardBar.Controls.Add(0)    
0
 

Author Comment

by:sterlingdev
ID: 17041570
Thanks to all!
However, I'm giving the points to hiteshgupta1 as the article mentioned is interesting and could prove useful in the future...

However, the workaround which solved my problem is as folows:

I replaced the module-level declaration of my button...
Dim WithEvents myButton As Office.CommandBarButton

with...
Dim myButton As Office.CommandBarButton
Dim WithEvents MenuHandler2 As CommandBarEvents

Then, at the bottom of the event where I wanted to create the commandbar button I added the following code:
Set MenuHandler2 = VBInstance.Events.CommandBarEvents(myButton)

Obviously the event fired when the user clicks my button will be:
Private Sub MenuHandler2_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
...
End Sub
0

Featured Post

[Webinar] Lessons on Recovering from Petya

Skyport is working hard to help customers recover from recent attacks, like the Petya worm. This work has brought to light some important lessons. New malware attacks like this can take down your entire environment. Learn from others mistakes on how to prevent Petya like worms.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

There are many ways to remove duplicate entries in an SQL or Access database. Most make you temporarily insert an ID field, make a temp table and copy data back and forth, and/or are slow. Here is an easy way in VB6 using ADO to remove duplicate row…
Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Suggested Courses

719 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question