读书人

builder自带的office2k组件调用word含

发布时间: 2012-03-07 09:13:51 作者: rapoo

builder自带的office2k组件调用word含参数的宏的问题
builder中word_2K_SRVR.h头文件中定义的函数为:
TVariant __fastcall Run(BSTR MacroName/*[in]*/, VARIANT* varg1/*[in,opt]*/,
VARIANT* varg2/*[in,opt]*/, VARIANT* varg3/*[in,opt]*/,
VARIANT* varg4/*[in,opt]*/, VARIANT* varg5/*[in,opt]*/,
VARIANT* varg6/*[in,opt]*/, VARIANT* varg7/*[in,opt]*/,
VARIANT* varg8/*[in,opt]*/, VARIANT* varg9/*[in,opt]*/,
VARIANT* varg10/*[in,opt]*/, VARIANT* varg11/*[in,opt]*/,
VARIANT* varg12/*[in,opt]*/, VARIANT* varg13/*[in,opt]*/,
VARIANT* varg14/*[in,opt]*/, VARIANT* varg15/*[in,opt]*/,
VARIANT* varg16/*[in,opt]*/, VARIANT* varg17/*[in,opt]*/,
VARIANT* varg18/*[in,opt]*/, VARIANT* varg19/*[in,opt]*/,
VARIANT* varg20/*[in,opt]*/, VARIANT* varg21/*[in,opt]*/,
VARIANT* varg22/*[in,opt]*/, VARIANT* varg23/*[in,opt]*/,
VARIANT* varg24/*[in,opt]*/, VARIANT* varg25/*[in,opt]*/,
VARIANT* varg26/*[in,opt]*/, VARIANT* varg27/*[in,opt]*/,
VARIANT* varg28/*[in,opt]*/, VARIANT* varg29/*[in,opt]*/,
VARIANT* varg30/*[in,opt]*/)

在C++builder中添加wordapplication组件,打开word文档后,通过上述函数调用word宏Macro1(str as string),该宏已定义好。调用方法如下:
AnsiString strDate=DateToStr(Date());
Variant aaa=Variant(strDate);
WordApplication->Run(StringToOleStr("Macro1"),aaa);
执行后有以下错误报告:
[C++ Error] Unit1.cpp(28): E2193 Too few parameters in call to '_fastcall TWordApplication::Run(wchar_t *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *,tagVARIANT *)

急问各位TX解决知道。

[解决办法]

C/C++ code
void __fastcall TForm1::Button1Click(TObject *Sender){    // 启动WORD    WordApplication1->Connect();    VARIANT v;    VariantInit(&v);    V_BSTR(&v) = SysAllocString(L"C:\\ccrun\\123.doc");    V_VT(&v) = VT_BSTR;    // 打开指定的文档    WordApplication1->Documents->Open(&v);    VariantClear(&v);    String strValue = DateToStr(Date());    V_BSTR(&v) = SysAllocString(WideString(strValue).c_bstr());    V_VT(&v) = VT_BSTR;    // 运行文档中的宏(带一个参数)    // WORD_2K中这个BT的方法,竟然要写够31个参数才行    WordApplication1->Run(            WideString("Macro1").c_bstr(), &v,            EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,            EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,            EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,            EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,            EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,            EmptyParam, EmptyParam, EmptyParam, EmptyParam            );    VariantClear(&v);    // 关闭WORD    WordApplication1->Disconnect();}
[解决办法]

读书人网 >C++ Builder

热点推荐