【问题标题】:VB6 Compile Outlook add-in - Compile Error: Automation Type Not supported in Visual basicVB6 编译 Outlook 加载项 - 编译错误:Visual basic 中不支持自动化类型
【发布时间】:2013-04-26 21:02:33
【问题描述】:

在将同一台 PC 上的 Office 升级到 Office 2013 Pro Plus 之后,我在尝试编译 VB6 Outlook 插件组件时遇到了一个令人恼火的问题。

错误

编译错误:Visual Basic 不支持自动化类型

被扔就行了:

Implements IDExtensibility2

我将在下面粘贴该文件中的完整代码。

在另一台 PC 上,我设法完成了所有设置,并将 Office 升级到 2012 并且编译没有问题,但现在在同一台 PC 上 - 我遇到了同样的错误。在此期间,我在 Office 安装方面搞砸了很多,所以我无法准确地告诉你我在它工作和不工作之间做了什么,但最重要的是,它似乎不应该做我所做的事情我正在尝试做(正如我所做的那样!),我只需要一些关于我可能需要做什么来恢复工作设置的指导。有什么想法吗??

Implements IDTExtensibility2
Private gBaseClass As New clsOlkAddIn

Private Sub IDTExtensibility2_OnAddInsUpdate(custom() As Variant)
'To Be Declared for IDTExtensibility2
End Sub
Private Sub IDTExtensibility2_OnBeginShutdown(custom() As Variant)
'To Be Declared for IDTExtensibility2
End Sub
Private Sub IDTExtensibility2_OnConnection(ByVal Application As Object, _
ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
ByVal AddInInst As Object, custom() As Variant)

gBaseClass.InitHandler Application, AddInInst.ProgId

End Sub

Private Sub IDTExtensibility2_OnDisconnection(ByVal RemoveMode _
As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
Dim objCB As Office.CommandBar
On Error Resume Next
'If RemoveMode = ext_dm_UserClosed Then
    Set objCB = golApp.ActiveExplorer.CommandBars("Addin")
    objCB.FindControl(Type:=msoControlPopup, Tag:="Menu").Delete
    objCB.FindControl(Type:=msoControlButton, Tag:="AddEmailsButton").Delete
    objCB.FindControl(Type:=msoControlButton, Tag:="SyncContactsButton").Delete
    objCB.FindControl(Type:=msoControlButton, Tag:="SyncTasksButton").Delete
    objCB.FindControl(Type:=msoControlButton, Tag:="SyncCalendarButton").Delete

    objCB.Delete
'End If
gBaseClass.UnInitHandler
    Set gBaseClass = Nothing
End Sub
Private Sub IDTExtensibility2_OnStartupComplete(custom() As Variant)
'To Be Declared for IDTExtensibility2
End Sub

【问题讨论】:

  • 道歉 - 在为此苦苦挣扎之后,我通过重新阅读上一篇文章的答案偶然发现了答案。
  • 安装 VB6 service pack 6 和最新的更新汇总解决了这个问题 - 正如这个问题的答案中的链接中所建议的那样:stackoverflow.com/questions/15118125/…

标签: vb6 outlook outlook-addin office-2013 outlook-2013


【解决方案1】:

我今天发现这个错误的另一个原因是函数上有一个可选参数并给它一个默认值,例如

Public Function Foo(MyString as String, Optional MyVariant as variant = null)

将其更改为:

Public Function Foo(MyString as String, Optional MyVariant as variant)

解决了,但我并没有像上面看起来那样简单(因此,为什么我在这里闲逛),我确实首先将可选参数更改为字符串,事实上,即使使用一个变体参数,具有除 Null 以外的任何默认值。导致错误的是 Null 的默认值。

【讨论】:

  • 这是真的。另外,我也看到了默认值Empty 的错误。
【解决方案2】:

正如您在回答中确认的那样(在 cmets 中),确保您已升级到最新的 Service Pack 始终是最佳选择,除非您知道您依赖于在以后的 Service Pack 中删除或更改的功能。

【讨论】:

    【解决方案3】:

    安装“Visual Basic 6.0 Service Pack 6 运行时扩展文件的累积更新汇总”(https://support.microsoft.com/en-us/help/957924/description-of-the-cumulative-update-rollup-for-the-visual-basic-6-0-s) 在我的实例中解决了此错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      相关资源
      最近更新 更多