急!!我用VB对Excel进行操作,执行完后发现Excel进程还在运行,只有终止程序才可以结束进程?

hwjfly 2006-10-06 04:44:32
Option Explicit

'这是加在模块里的代码
Public Sub test()

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

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("c:\book1.xls")
Set xlSheet = xlBook.Worksheets("Sheet1")

Dim rg As Range
Dim qq As Integer
xlSheet.Cells(1, 1).Activate
Set rg = ActiveCell.CurrentRegion
qq = rg.Rows.Count
Set rg = Nothing

'以下是一些对Excel的操作
' ..........
' .........

MsgBox "Rows are " & qq, vbInformation, "Hint"
xlBook.Save
xlBook.Close
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

End Sub


进程中总是有EXCEL关闭不上,只有程序结束了EXCEL才消失。
当将
Set rg = ActiveCell.CurrentRegion
qq = rg.Rows.Count
Set rg = Nothing
注释掉,就正常.
是不是还有什么变量没有释放。
拜托高手运行看看,在网上查了好久,也没有找到好的答案。郁闷。
谢谢,谢谢
...全文
737 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
LICHIBIN 2006-12-03
  • 打赏
  • 举报
回复
Set rg = xlSheet.ActiveCell.CurrentRegion
WuYunpeng 2006-12-01
  • 打赏
  • 举报
回复
要调用COLOSE方法它才会关闭
m00ners 2006-12-01
  • 打赏
  • 举报
回复
Mark
  • 打赏
  • 举报
回复
mark 我也遇到過。
wwh999 2006-11-25
  • 打赏
  • 举报
回复
'调用
Call subKillProcess("Excel.exe")

Public Sub subKillProcess(strProcess)

Dim strComputer
Dim objWMIService
Dim colProcessList
Dim objProcess

On Error Resume Next

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & strProcess & "'")
For Each objProcess In colProcessList
objProcess.Terminate
Next

End Sub
flexlonger 2006-11-10
  • 打赏
  • 举报
回复
我用access vba时,也遇到过,后来逐步调试,发现原因所在,看看OFFICE 软件帮助吧。
jam021 2006-11-08
  • 打赏
  • 举报
回复
将 Set rg = ActiveCell.CurrentRegion
改为:
Set rg = xlApp.ActiveCell.CurrentRegion
就可以了
记住:在外部环境比如VB中对office组件做操作,所有对象前都要加excel对象名,不然进程会结束不了
Dunzip 2006-10-20
  • 打赏
  • 举报
回复
1/Set rg = ActiveCell.CurrentRegion 改为 Set rg = xlSheet.ActiveCell.CurrentRegion
2/
xlBook.Save
xlBook.Close
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
改为
xlBook.Save
xlBook.Close
Set xlSheet = Nothing
Set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing



flexlonger 2006-10-20
  • 打赏
  • 举报
回复
退出前,将所有EXCEL对象变量都释放。如rg。和机器没有关系。
zhanglan1999 2006-10-07
  • 打赏
  • 举报
回复
我也常遇到此问题,经常是在这台机器上有EXCEL进程,换个机器可能就没有,不知是否与操作系统有关.

2,503

社区成员

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

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