快崩溃了,程序经常要自动打开Excel并处理一些操作,但Excel不能自动退出,结果越起越多,怎么办?

woolgate 2005-04-05 11:39:22
vc6,原来装excel2000,现在升级为excel2003,使用excel2000时导出来的excel9.h,看起来没有问题
使用诸如如下的方法操作,因为程序基本上无人守护,而且每隔一段时间要做一次doSomething,
结果Excel进程越开越多,不能自动退出,只有在程序结束时才把它开的Excel进程退出掉,可是我手动执行excelapp.quit()和excelapp.releasedispatch()方法啊,
另外一段代码也类似这段,不过里面没这个复杂,只有一个workbook,但是都是一个ExcelApp,
都执行CreateDispatch()/AttatchDispatch(),ReleaseDispatch();却可以正常退出
请各位属性的帮帮忙,感激不尽
void doSomthing()
{
_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbBook1;
_Workbook wbBook2;//同样有些操作

ExcelApp.CreateDispatch("Excel.Application",NULL)
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),TRUE);
wbBook1.AttachDispatch(wbsMyBooks.Open("c:\\test.xls", vtMissing,
vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,
vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,
vtFalse), TRUE);
...
...
wbBook1.Close(vtFalse, vtMissing, vtMissing);
ExcelApp.Quit();
wbBook.ReleaseDispatch();
wbBook1.ReleaseDispatch();
wbsMyBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
}
...全文
174 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gjd111686 2005-04-07
  • 打赏
  • 举报
回复
用GetActiveObject判断一下再打开.
GetItem(COleVariant(iRow),COleVariant(iCol)));
然后在调用Quit()之前设置警告属性[alert什么的,忘记了]为false;
woolgate 2005-04-07
  • 打赏
  • 举报
回复
挨个试了一下,主要问题出在里面有一个循环语句,
Worksheets wss;
Worksheets wss2;
_Worksheet ws;
_Worksheet ws2;
Range rng;
Range rng2;
wss=wbBook.GetWorksheets();
wss2=wbBook2.GetWorksheets();
for(long i=1; i<=wss2.GetCount(); i++)
{
ws=wss.GetItem(_variant_t(i))
ws2=wss2.GetItem(_variant_t(i));
rng=ws.GetCells();
rng2=ws2.GetCells();
for(long iRow=1; iRow<=(long)m_nRowCount; iRow++)
for(long iCol=1; iCol<=(long)m_nColCount; iCol++)
{
rng2.SetItem(_variant_t(iRow),_variant_t(iCol),
rng.GetItem(_variant_t(iRow),_variant_t(iCol)));
///主要问题就出在这句话上,SetItem都正确,GetItem就不正确了,但结果确实是复制值了,很奇怪
///这里的不正确指的是Excel不能随ExcelApp.Quit()而退出,只有在程序自身退出时才退出,其他表面看无错误信号
}
rng2.ReleaseDispatch();
rng.ReleaseDispatch();
ws2.ReleaseDispatch();
ws.ReleaseDispatch();
}
hhjjhjhj 2005-04-06
  • 打赏
  • 举报
回复
错误在省略的代码里。
沐NeMo 2005-04-06
  • 打赏
  • 举报
回复
你的代码有用到xlsheet吗。也许出错在xlsheet.

5,138

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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