Re[2]: Add-in в Ворде 2000 работает, а в Ворде97 нет!!!!
От: Dmitriy Yakovlev Украина www.prof-uis.com
Дата: 14.10.04 15:33
Оценка:
Здравствуйте, globus, Вы писали:

G>Сделал все как написано, и в ВБА скрипте при вызове "obj.Initialize o" выдает "Ошибка выполнения 13, Несоответствие типа"

G>менял "Dim o As Application" на "Dim o As Object" не помогло.
G>В idl у меня

G>
G>interface IAddin : IDispatch
G>{
G>    [id(1),helpstring("method Init")] HRESULT  Initialize([in] IDispatch *pDisp);
G>    [id(2),helpstring("method Uninit")] HRESULT  Uninitialize([in] IDispatch *pDisp);
G>};
G>



Моя реализация выглядит так, у меня все работает, проверь у себя, возможно там какая-то мелкая ошибочка.

interface IWTWordAddin : IDispatch
{
    [id(1), helpstring("method Init")] HRESULT Init(IDispatch * Application);
    [id(2), helpstring("method Uninit")] HRESULT Uninit();
    [id(3), helpstring("method DoCmd97")] HRESULT DoCmd97(BSTR Tag );
};

public:
STDMETHOD(DoCmd97)(BSTR Tag );
STDMETHOD(Uninit)();
STDMETHOD(Init)(IDispatch * Application);

////

STDMETHODIMP CWTWordAddin::Init(IDispatch *Application)
{
    // ...
}

STDMETHODIMP CWTWordAddin::Uninit()
{
    // ...
}

STDMETHODIMP CWTWordAddin::DoCmd97(BSTR Tag)
{
    // ...
}

Dim o As Application
Dim obj As Object

Sub AutoExec()
    Set obj = CreateObject("WTOfficeAddin.WTWordAddin.1")
    Set o = ThisDocument.Application
    obj.Init o
End Sub

Sub AutoExit()
    If Not obj Is Nothing Then
        obj.Uninit
    End If
    Set obj = Nothing
    Set o = Nothing
End Sub

Sub OnCmd()
    If Not obj Is Nothing Then
        obj.DoCmd97 CommandBars.ActionControl.Tag
    End If
End Sub
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.