急啊,谁帮帮我啊,我搜了半天没有答案

cplusplusmfc 2009-06-05 02:02:35
我想在自己的程序中打开已经存在的Excel文件 下了写面的程序 不知为什么总是不行
Variant Ex,Wb,Sh1;
Ex = CreateOleObject("Excel.Application");
Ex.OlePropertySet("Visible",true);当程序执行此处时就异常
我在windows任务管理器中发现创建的 Excel已经存在 就是没有显示出来. 而上面的程序在
另外一个工程中却正常运行 郁闷呀 请高手指教
注意 : 是在这里就发生了异常 Ex.OlePropertySet("Visible",true);;
在其他版 给出的方法都不行 ,难到真的没人会了

错误提示: Project Btsys31 exe raises exception class EAccessViolation with message
"access violation at address 0076b8c7 read or address 00000800" Process stoped
...全文
37 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cplusplusmfc 2009-06-05
  • 打赏
  • 举报
回复
ccrun大哥,try...catch起来了,Excel在进程中也没有,还是 "access violation at address 0076b8c7 read or address 00000800" ,真愁人
ccrun.com 2009-06-05
  • 打赏
  • 举报
回复
代码本身没有什么问题,不过CreateOleObject这一段,最好try...catch()起来。另外在调试前,从任务管理器中把已经打开的Excel进程全部关掉。
cplusplusmfc 2009-06-05
  • 打赏
  • 举报
回复
我照二位的修改了一下程序,没效果啊,最奇怪的是这段程序可以单独运行的,应该不是这个地方的问题,可能是编译环境的问题,我调了老半天了,郁闷死了,大家没碰到类似的情况吗?救我啊,我不想重新做,已经做了好几天了。
springworker 2009-06-05
  • 打赏
  • 举报
回复
在.h中添加
private: // User declarations
Variant Ex; // User declarations



try
{
//file:指定report目录下的报表文件用于用户操作
AnsiString ExcelFileName = GetCurrentDir()+"\\你好.xls";
if(!FileExists(ExcelFileName))
{
Application->MessageBox("Excel表文件不存在,无法打开!",
"错误",MB_ICONSTOP|MB_OK);
return;
}
try
{
Ex = Variant::CreateObject("Excel.Application");
}
catch(...)
{
Application->MessageBox("无法启动Excel","错误",MB_ICONSTOP|MB_OK);
return;
}
Ex.OlePropertySet("Visible",true);
Ex.OlePropertyGet("WorkBooks").OleProcedure("Open",ExcelFileName.c_str());
}
catch(...)
{
Application->MessageBox("操作Excel表格错误!","错误",MB_ICONSTOP|MB_OK);
Ex.OleFunction("Quit");
}
fairchild811 2009-06-05
  • 打赏
  • 举报
回复
Variant ExcelApp;
Variant Sheet1;
Variant WorkBook1;
Variant Range;

ExcelApp = Variant::CreateObject ("Excel.Application");
ExcelApp.OlePropertySet("Visible", (Variant)true); // 显示MS office窗口
if(OpenDialog1->Execute()==IDOK)
{
AnsiString fileName = OpenDialog1->FileName;
ExcelApp.OlePropertyGet("workbooks").OleFunction("open",fileName.c_str()); //打开excel
WorkBook1 = ExcelApp.OlePropertyGet("ActiveWorkBook"); // 获取activeworkbook
Sheet1 = WorkBook1.OlePropertyGet("ActiveSheet"); // 获取activesheet
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧