vb 调用 Excel 后 对象总是无法释放

zlt982001 2005-03-21 11:53:30
简单的代码如下
Dim ex As Excel.Application
Dim wk As Excel.Workbook
Dim Sheet As Excel.Worksheet

Set ex = CreateObject("Excel.Application")
ex.Visible = True
Set wk = ex.Workbooks.Add("c:\1.xls")
'or set wk=ex.workbooks.open("c:\xls")


If Not ex Is Nothing Then
ex.DisplayAlerts = False
If ex.Workbooks.Count > 0 Then
ex.ActiveWorkbook.Close False
End If
ex.DisplayAlerts = True
ex.Quit
End If
Set ex = Nothing
Set wk = Nothing

搜索了很多相关帖,没有什么收获,都不能完全卸载excel对象
发现只要 用workbook 打开一个文件 就会
Set wk = ex.Workbooks.Add("c:\1.xls")
'or set wk=ex.workbooks.open("c:\xls")
谁有除了中止进程以外的 解决方法

...全文
465 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZhouBoTong 2005-03-29
  • 打赏
  • 举报
回复
我的Excel2000 版本是 9.0.3821 SR-1 也存在这个问题
ZhouBoTong 2005-03-29
  • 打赏
  • 举报
回复
up
zlt982001 2005-03-29
  • 打赏
  • 举报
回复
to flareboy(催眠)
这种方法也试过,不行的

看来没有什么解决方法了,我自己用 API 写了个 kill excel 的 function ,目前只能这样了


vanquoxf 2005-03-29
  • 打赏
  • 举报
回复
应该是代码的问题,不是office问题.
vanquoxf 2005-03-29
  • 打赏
  • 举报
回复
上面提供的差不多就是正确答案了,你可以照这个方向去改,调试的试试.
flareboy 2005-03-29
  • 打赏
  • 举报
回复
wk.Save 后面再加一句:wk.Close
flareboy 2005-03-29
  • 打赏
  • 举报
回复
不要引用Excel组件,如下:
Dim ex As Object
Dim wk As Object
Dim Sheet As Object

Set ex = CreateObject("Excel.Application")
ex.Visible = True
Set wk = ex.Workbooks.Add("c:\1.xls")
'or set wk=ex.workbooks.open("c:\xls")


If Not ex Is Nothing Then
ex.DisplayAlerts = False
If ex.Workbooks.Count > 0 Then
ex.ActiveWorkbook.Close False
End If
ex.DisplayAlerts = True
wk.Save
ex.Quit
End If
Set wk = Nothing
Set ex = Nothing
kahou 2005-03-29
  • 打赏
  • 举报
回复
我给公司做了很多报表程序,用以下方法就不出现对象总是无法释放的问题了

Dim VBExcel As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

............................
..........................

xlBook.Save
xlBook.Close
Set VBExcel = Nothing
csboy163 2005-03-29
  • 打赏
  • 举报
回复
是有这个问题
kahou 2005-03-29
  • 打赏
  • 举报
回复
是这个吗?

Dim VBExcel As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

............................
..........................

xlBook.Save
xlBook.Close
Set VBExcel = Nothing
zlt982001 2005-03-23
  • 打赏
  • 举报
回复
还是没有有意义的答案...
TechnoFantasy 2005-03-22
  • 打赏
  • 举报
回复
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;219151
你运行一下上面微软提供的代码,看看是不是还出现Excel没有释放的问题,如果有的话,可能是你的Excel的问题了。
TechnoFantasy 2005-03-22
  • 打赏
  • 举报
回复
在我的机器上面运行是没有问题的,我的机器是2003中文版+Excel 11
cef 2005-03-22
  • 打赏
  • 举报
回复
好像完全卸载了啊!进程里也没发现还有excel啊!
是不是我还没明白你的意思!!
zlt982001 2005-03-22
  • 打赏
  • 举报
回复
我的excel 版本号是 9.0.2829 是没有打过任何补丁的原始版本
在一台winxp 上excel 版本号一样的也有该问题

在另一台 版本号是 9.0.6926 SP-3 上就没有该问题

总不能到每个客户端都去安装sp 吧
不知道 office 97 会不会有该问题
不知道具体哪个补丁是在修改 excel 该问题
谁知道请告诉我,也给分
zlt982001 2005-03-22
  • 打赏
  • 举报
回复
微软的那个代码没有关闭excel 的操作,所以没有什么意义
如果我不使用workbook open 一个xls 文件,只是 add 并操作,就没有该问题
在一台 office 2003 上运行也没有该问题

到底是office 的错还是我命不好
yangao 2005-03-22
  • 打赏
  • 举报
回复
先close
再nothing
显示关闭wk
zlt982001 2005-03-22
  • 打赏
  • 举报
回复
操作环境是 win2000 +office2000 + vb6sp6
在3 台相同环境的机器调试都有这个问题
jxgzam 2005-03-22
  • 打赏
  • 举报
回复
我也碰到类似的问题,设置了quit和nothing进程中依然存在,而且在第二次按下命令按纽时,程序还出错。
我目前的解决办法是,相关参数保存在文本文件,将要执行的代码编译成EXE,再shell调用。
luhui88 2005-03-22
  • 打赏
  • 举报
回复
mark~
还没研究到这一部 呵呵
加载更多回复(2)

2,461

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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