vb 杀excel进程
发布网友
发布时间:2022-06-15 09:01
我来回答
共5个回答
热心网友
时间:2023-10-24 04:55
vb 杀excel进程
Vb调用excel,出错了就会在进程里留下excel的进程,再调用就会
出错。谁给段代码,检查进程里的excel并杀掉。谢谢!好的追加分!
[1]在Vb2005中结束所有打开的Excel进程2007年11月24日 11:55打开了Excel文件,使用后是要关闭的,下面是打开及关闭的所有代码,本人测试成功。
Try
Dim Addr As New Excel.Application
'Dim AddrString As String = "F:\Myfiles\学校文件\2007下半年\教职工通讯录200709.xls"
'Addr.Workbooks.Open(AddrString)
Addr.Workbooks.Open("F:\Myfiles\学校文件\2007下半年\教职工通讯录200709.xls")
Addr.Visible = True
Catch ex As Exception
MsgBox(ex.Message)
Finally
Dim pList() As System.Diagnostics.Process = _
System.Diagnostics.Process.GetProcessesByName("excel")
For Each proc As System.Diagnostics.Process In pList
Try
proc.Kill()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Next
End Try
[2] 在VB中怎样结束Excel进程
我想把VB中的数据保存在Excel中,我用的一个开始和结束按钮,但是当我按下结束按钮时,Excel并没有在进程中消失
,除非我把整个程序给结束了才可以终止Excel这个进程,可我又不能终止程序的运行,问下高手有什么方法可以在不用
终止程序的情况下就可以结束Excel进程。下面是我的程序代码:
Dim exApp As Excel.Application
Private Sub start_Command_Click()
Set exApp = New Excel.Application
CommonDialog1.Filter = "Excel 表 ¦*.xls"
CommonDialog1.ShowOpen
If Len(CommonDialog1.FileName) >= 1 Then
exApp.Workbooks.Open CommonDialog1.FileName
Range(Cells(1, 1), Cells(1, 1)) = "采集的温度"
Range(Cells(1, 2), Cells(1, 2)) = "P(比例系数)"
Range(Cells(1, 3), Cells(1, 3)) = "I(积分系数)"
Range(Cells(1, 4), Cells(1, 4)) = "D(微分系数)"
exApp.ActiveWorkbook.Save
exApp.ActiveWorkbook.Close
End If
End Sub
望大家给点意见!
Private Sub stop_Command_Click()
exApp.Quit
Set exApp = Nothing
End Sub
================================================
stop_Command_Click 明显多余,而且如果不按结束按钮而连按两次开始按钮就会多出一个未关闭的 Excel 实例。
你的这种应用应该将所有的 Excel 操作全部在一个按钮内实现,exApp 变量也应该作为过程级变量声明。
==================================================
VB code'打开excel文件Public Sub openExcel(ByVal strName As String) If blnOpenStatus Then closeExcel End If Set xlsApp = CreateObject("Excel.Application") Set xlsBook = xlsApp.Workbooks.Open(strName) Set xlsSheet = xlsBook.ActiveSheet blnOpenStatus = TrueEnd Sub'关闭excel文件Public Sub closeExcel() If blnOpenStatus Then blnOpenStatus = False xlsBook.Close xlsApp.Quit Set xlsApp = Nothing Set xlsBook = Nothing Set xlsSheet = Nothing End IfEnd Sub
当然, xlsApp xlsBook xlsSheet 为模块级变量
blnOpenStatus 标记是否有打开的EXCEL进程;
若有则先关闭,若没有则不关闭;
[3]我在程序中的一个自定义函数调用了EXCEL,结束时用了set xx=nothing了,但是第一次调用函数,正常,但是第二次调用就出错, 在进程中可以看到 EXCEL.exe,只有把程序退出,进程中的EXCEL.exe就消失了, 有的朋友建议我用.quit,.exit,结束EXCEL.exe,都没有用,我现在很急,也不深究了,想每次调用那个函数就判断一次 进程中是否有EXCEL.exe,如果有就用代码结束它,哪位仁兄忙我想想代码如何写(用VB6),在此谢谢大家,让我们一起进步!
VB提供的例子Geofacts中,提供判别当前是否有EXCEL在运行的方法,截取如下:
Public appWorld As Excel.Application
Public wbWorld As Excel.Workbook
'
' Public shtWorld As Excel.Worksheet
Sub Setup()
' 注意: 如果您的机器没有安装 Excel 97 ,
' 您必须更改应用到 Excel 95 对象库,
' 然后在上面的声明区, 更改变量声明从
' "wbWorld as Workbook" 到 "shtWorld As Worksheet"
' 然后更改所有引用从 "wbWorld" 到 "shtWorld"。
On Error Resume Next '忽略错误
Set appWorld = GetObject(, "Excel.Application") '查找一个正在运行的 Excel 拷贝
If Err.Number <> 0 Then '如果 Excel 没有运行则
Set appWorld = CreateObject("Excel.Application") '运行它
End If
Err.Clear ' 清除发生错误的 Err 对象
On Error GoTo 0 '保留普通错误进程
Set wbWorld = appWorld.Workbooks.Open(App.Path & "world.xls")
End Sub
在上面程序的基础上,用下列代码就能结束进程中的EXCEL.EXE:
Private Sub Command1_Click()
Setup
appWorld.Quit
Set appWorld = Nothing
End Sub
参考资料:http://www.vbgood.com/viewthread.php?tid=13125
http://tieba.baidu.com/f?kz=257861129
参考资料:http://www.luojia.net/bbs/viewthread.php?tid=143848
热心网友
时间:2023-10-24 04:55
'结束进程
On Error Resume Next
dim s
s="excel.exe"
Set objWMIService =GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colProcessList=objWMIService.ExecQuery _
("Select * from Win32_Process Where Name='" & s & "'")
For Each objProcess in colProcessList
msgbox "已发现目标!"
objProcess.Terminate()
Next
热心网友
时间:2023-10-24 04:56
shell "tskill excel"
热心网友
时间:2023-10-24 04:57
没有见过这
热心网友
时间:2023-10-24 04:57
貌似很专业的问题。 。我以为是杀什么毒的呢