在C++ Builder中用Ole控制Excel表

来源:百度知道 编辑:UC知道 时间:2024/06/18 13:18:55
我在c++中编写程序时,遇到了这个问题,便已是不抱错,运行时抱错,程序停留在“ return OlePropertyGet(name, static_cast<TAutoArgsBase*>(&args));”我不知道这应该是原程序的哪行,而且这是什么错误呢?相关源代码如下:void __fastcall TForm1::Button2Click(TObject *Sender)
{
AnsiString StrFileName = GetCurrentDir()+"\\trpt\\Export.xls";

if(!FileExists(StrFileName))
{
Application->MessageBox("报表模板文件不存在,无法打开!",
"错误",MB_ICONSTOP|MB_OK);
return;
}
Variant ExcelApp;
Variant WorkBook1;
Variant WorkSheet1;
Variant Range;
Variant Borders;
try
{
ExcelApp=Variant::CreateObject("Excel.Application");
}
catch(...)
{
MessageBox(Handle,"无发起动EXCEL!","信息提示",MB_ICONSTOP|MB_OK);
return;
}
ExcelApp.OlePropertySet("Visible",false);//ExCEL is not visible
ExcelApp.OlePropertyGet("WorkBooks").OleProcedure("Open

这个问题很好查,错误是在有两个参数调用中,你的代码中有:
ExcelApp.OlePropertyGet("WorkBooks").OleProcedure("Open",StrFileName.c_str());
//WorkSheet1.OlePropertyGet("Cells",i+4,j).OlePropertySet("Value",StrValue.c_str());
Range=WorkSheet1.OlePropertyGet("Range",StrRange.c_str());
如:第一个检查是
AnsiString StrFileName = GetCurrentDir()+"\\trpt\\Export.xls";
还是
AnsiString StrFileName = GetCurrentDir()+"trpt\\Export.xls";
第二个检查 StrRange.c_str()是否正确
等。
不过可能的错误也许并不真是在这一个调用,而可能在上一个调用。举个例子说,如果第一句出错也可能是在OlePropertyGet("WorkBooks"),当然这只是例子,并不是它真的有错误。