第一个窗口:
有一个按钮,打开一个excel报表文件(包含宏的执行)。
手动关闭此excel文件。
然后再次按这个按扭,可以再次执行此excel文件。
然后再次手动关闭此excel文件。
(可是为何excel.exe一直在内存中存在。)第一个窗口中的另外一个按钮:
打开一个窗口,窗口中的打开excel文件的按钮,无法再打开excel。
(内存中出现两个excel.exe。)为何?如果修改。
有一个按钮,打开一个excel报表文件(包含宏的执行)。
手动关闭此excel文件。
然后再次按这个按扭,可以再次执行此excel文件。
然后再次手动关闭此excel文件。
(可是为何excel.exe一直在内存中存在。)第一个窗口中的另外一个按钮:
打开一个窗口,窗口中的打开excel文件的按钮,无法再打开excel。
(内存中出现两个excel.exe。)为何?如果修改。
解决方案 »
- 高分贴!!!!!!!!解决了另外开帖加分!!!
- 高分求题解(3/3)!!!
- DLL Form 問題~~ ,高手賜教~
- 这个程序实在不好用
- 如何在vb中使用自定义资源?如.wav
- eVB为什么不支持对窗体对象的Unload?——在先等待
- 怎样用VB把的我的控件(组件有几个.dll及oca文件)打包成.cab文件
- 求判断网络打印机是否可用的方法
- Distinct关键词的问题,急.....高分奉送.
- 又是错误处理的问题,邦一下忙,错误说什么“更新影响过多行”
- vb 中怎样调用 静态链接库
- 请问怎样可以实现把资源管理器里面的c:\1.txt文件, 用鼠标拖到 richtextbox 里面放下时, richtextbox 可以显示里面的文件内容?
set EXCEL类名=nothing
我用这样打开的。
释放set Obj_ArgApp = nothing也没反应。
obj_argapp.close
然后再释放
set obj_argapp=nothing
'EXCELopen
ret = OpenExcelFile(ExcFileName, Obj_ArgApp, strMsg)
If ret = False Then
MsgBox strMsg
End If
Public Function OpenExcelFile(strFileName As String, _
Obj_ArgApp As Excel.Application, _
Msg As String) As Boolean
Dim xlsBook As Object
Dim xlsSheet As Object
On Error Resume Next
Set Obj_ArgApp = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Set Obj_ArgApp = CreateObject("Excel.Application")
Obj_ArgApp.Application.Visible = True
Err.Clear
End If
Obj_ArgApp.ScreenUpdating = True
Obj_ArgApp.Visible = True
Obj_ArgApp.DisplayAlerts = True Workbooks.Open FileName:=strFileName
If Err.Number <> 0 Then
Msg = "err!!" & Chr(13) & Str(Err.Number) & " " & Err.Description
OpenExcelFile = False
Exit Function
Else
ActiveWorkbook.RunAutoMacros (xlAutoOpen)
If Err.Number <> 0 Then
Msg = "err!!" & Chr(13) & Str(Err.Number) & " " & Err.Description
OpenExcelFile = False
Exit Function
End If
End If
然后再用set nothing就可以了.
没用的。
你要先使用APPLICATION.QUIT方法退出EXCEL进程,还要保证退出时EXCEL不回询问是否要保存文件
然后再用set nothing就可以了.
没有打算自动关闭excel,因为是报表,还需要打印后才关闭。
你可以试图用一个Excel对象打开多个book,或者sheet,这样可以避免Excel对象没有指针指向的问题
过一段时间以后,这些不用的excel进程应该会自动关闭(由操作系统进行)。
要么,你就把 Obj_ArgApp 定义为一个公共变量,效果应该会好些。
下面是例子
Public Sub GenReport()
Dim ExecFile As String
ExecFile="test.xls"
on error resume next
Dim ObjExcel As Excel.Application
Set ObjExcel = New Excel.Application
If Err.Number <> 0 Then
MsgBox "无法打开Execl系统,请检查您的机器上是否安装Excel!"
Exit Sub
End If
ObjExcel.Visible = False '''''''''''''''''''''''''''
Dim ObjBook As Excel.Workbook
Set ObjBook = ObjExcel.Workbooks.Add
ObjExcel.Sheets(1).Select
Dim i As Long
Dim j As Long
For i = 0 To 100
For j = 0 To 10
ObjExcel.Range(Chr(65 + j) & CStr(i + 1)).Formula = i*j
Next j
Next i
ObjBook.SaveAs ExecFile
ObjBook.Close False
Set ObjBook = Nothing
Set ObjExcel = Nothing
End Sub