0

同じ 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
4

3 に答える 3

1

このエラーのもう 1 つの原因は、今日私が見つけたように、関数にオプションのパラメーターがあり、それにデフォルトを与えていることです。

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

これを次のように変更します。

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

解決しましたが、上記のように単純には到達しませんでした (したがって、なぜここでぶらぶらしているのですか)、最初にオプションのパラメーターを文字列に変更しましたが、実際には、バリアントパラメーターを使用しても機能しました、Null以外のデフォルトが機能しました。エラーの原因となったのは、デフォルトの Null でした。

于 2014-03-27T13:50:10.030 に答える