更改窗体状态excel就关闭,不动就就杀不掉,为何,菜鸟跪求[vb.net]

ydj0427 2009-04-29 02:59:34
代码如下:
Imports System
Imports System.Reflection ' For Missing.Value and BindingFlags
Imports System.Runtime.InteropServices ' For COMException
Imports Excel

…………

Dim VBExcel As Application
VBExcel = New Application()
VBExcel.UserControl = False
VBExcel.Visible = False
With VBExcel
With VBExcel.Workbooks.Open(Me.TextBox4.Text)
With VBExcel.ActiveWorkbook
VBExcel.ActiveWorkbook.Close(True)
End With

End With
.Quit()
End With
VBExcel = Nothing
程序运行了,excel进程不退,但最小化后又回来,进程就没有了,其他地方我都没有动,比较郁闷找不到原因
...全文
108 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpio 2009-04-29
  • 打赏
  • 举报
回复
那为什么只给我15分?
ydj0427 2009-04-29
  • 打赏
  • 举报
回复
明白了,听了二楼的垃圾回收,夹了一句 GC.Collect()搞定,三楼的也可以,结贴了
a854468521 2009-04-29
  • 打赏
  • 举报
回复
Star = Now.ToOADate
Dim Excel As New Microsoft.Office.Interop.Excel.Application
StopD = Now.ToOADate
你可以测试一下时间间隔,应该在几百毫秒内,而且只杀掉该时间范围内的EXCEL进程,误杀的可能性不大。
ydj0427 2009-04-29
  • 打赏
  • 举报
回复
若相同时间段内操作其他的excel,岂不是误杀了?
a854468521 2009-04-29
  • 打赏
  • 举报
回复

Dim Star, StopD As Double
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Star = Now.ToOADate
Dim Excel As New Microsoft.Office.Interop.Excel.Application
StopD = Now.ToOADate
Excel.DisplayAlerts = False '关闭警告
Excel.Quit()
Dim Po() As Process = Process.GetProcesses
For Each Pi As Process In Po
Try
If Pi.MainModule.ModuleName.Contains("EXCEL.EXE") = True Then
If Pi.StartTime.ToOADate > Star And Pi.StartTime.ToOADate < StopD Then '经试验如果为DATETIME类型无法判断.
Pi.Kill() '在两个时间内的Excel进程杀掉.
End If
End If
Catch KILL As Exception

End Try
Next
End Sub

cpio 2009-04-29
  • 打赏
  • 举报
回复
这个应该是垃圾回收没有及时回收,可能最小化的时候才回收吧

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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