BCB6打开excel出错
下面这段代码读取一个EXCEL,测试的时候,放在Button的Click里没问题。但我放进项目里面执行的时候,到vExcelApp.OlePropertyGet("workbooks").OleFunction("Open", strSaveDir1.c_bstr() );
这句的时候报错:
---------------------------
Debugger Exception Notification
---------------------------
Project QuarkCallAgent.exe raised exception class EAccessViolation with message 'Access violation at address 00894CE3 in module 'QuarkCallAgent.exe'. Read of address 00000800'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
AnsiString strSaveDir;
if(OpenDialog1->Execute())
{
strSaveDir = OpenDialog1->FileName;
}
else
{
return; //点击取消返回
}
Variant vExcelApp, Sheet1,WorkBook1,Range;
vExcelApp = Variant::CreateObject("Excel.Application");
//打开文件
WideString strSaveDir1 = WideString(strSaveDir);
vExcelApp.OlePropertyGet("workbooks").OleFunction("Open", strSaveDir1.c_bstr() );
//创建工作薄对象(此时该对象得到的是已打开文件的第一个工作薄)
WorkBook1 = vExcelApp.OlePropertyGet("ActiveWorkBook");
//创建工作表对象(此时该对象得到的是已打开文件的第一个工作表)
Sheet1 = WorkBook1.OlePropertyGet("ActiveSheet");
int columns = Sheet1.OlePropertyGet("UsedRange").OlePropertyGet("Columns").OlePropertyGet("Count"); //列数
int rows = Sheet1.OlePropertyGet("UsedRange").OlePropertyGet("Rows").OlePropertyGet("Count"); //行数
[解决办法]
if (!FileExists(strSaveDir)) return;
vExcelApp.OlePropertyGet("workbooks").OleFunction("Open", WideString(strSaveDir));