excel不能释放!~~谁给解释一下,急急急!~~~~
Dim v_name As Stringv_name = sPath & "\" & v_控 & ".xls"
Try
setexcelopen()'获得file_flag的程序
If file_flag <> "" Then '由vb关闭excel()
If Not File.Exists(v_name) Then
xlwbk.SaveAs(sPath & "\" & v_控机构名称(v_控num) & "原件选择" & ".xls")
End If
xlwbk.RunAutoMacros(Excel.XlRunAutoMacro.xlAutoClose) '执行excel关闭宏
xlwbk.Close(True) '关闭excel工作簿
xlapp.Quit() '(关闭excel)
End If
xlapp = Nothing '释放excel对象
Catch ex As Exception
MsgBox("问题发生在保存excel过程中" & ex.Message, MsgBoxStyle.Information, "注意")
End Try
我为什么不能释放excel那???请给予答复!~~我实在没看出我哪块不对,谢谢!~急!~ --------------------编程问答-------------------- 怎么没人给我回啊???????????大哥来个人啊 --------------------编程问答-------------------- 在调用该方法的
方法中的finilly中加GC.Collect (); --------------------编程问答-------------------- 啥东西啊!~GC.collect是什么东西,为什么加了它就能解决啊????给讲讲呗!~ --------------------编程问答--------------------
强行销毁 --------------------编程问答-------------------- 我一般是另寫一個方法,關掉所有Excel的進程的。
Sub KillProcess(ByVal processName As string)
'dim myproc as System.Diagnostics.Process = new System.Diagnostics.Process()
Try
foreach thisproc as System.Diagnostics.Process in Process.GetProcessesByName(processName))
if(not thisproc.CloseMainWindow())
thisproc.Kill()
end for
Catch Exc as Exception
thrown new Exception("",Exc)
End Try
End Sub
大概就是這樣子吧,沒有使用IDE,可能大小寫會有小小問題。還好VB不區分的。接收的參數就是程序名稱
--------------------编程问答-------------------- System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsFile)
GC.Collect()
//其中xlsFile是个com的Object,gc是垃圾收集器.net的内存是它进行管理的 --------------------编程问答-------------------- 哈哈,和我之前一样的问题,无法关闭Excel的进程,不过,我找到了解决的办法了!如下,希望可以解决你的问题哦。
注意下面的这句代码,我想这个就是你想要的哦:-):Marshal.ReleaseComObject(myapp)
Private Function getExcelSheetName() As String--------------------编程问答-------------------- 我遇到的情况是在MDI中调用Excel,MDI退出后执行上面的清理操作,没用(进程中还有Excel),只有在主程序退出时才有效(Excel销毁)!
Dim myapp As New Excel.Application
Dim xlsbook1 As Excel.Workbook
Dim workSheet As Excel.Worksheet
Dim sheetName As String
Try
xlsbook1 = myapp.Workbooks.Open(ExcelFilePath)
Dim xlssheet1 As Excel.Worksheet
workSheet = xlsbook1.Sheets.Item(1)
sheetName = workSheet.Name
xlsbook1.Close()
Marshal.ReleaseComObject(myapp)
myapp = Nothing
Catch ex As Exception
MessageBox.Show(ex.ToString, "Exception!", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Return sheetName
End Function
不知谁知道更好的方法?! --------------------编程问答--------------------
那还是你的Excel开启后没有Close的原因啊!
要先Close,然后再释放进程就可以了!
补充:.NET技术 , VB.NET