|
4#
楼主 |
发表于 2010-2-23 16:38:08
|
只看该作者
本帖最后由 xryacc2 于 2010-2-23 18:15 编辑
非常感谢红尘如烟,只是还有一个问题未能解决:
objExcel.ActiveWorkbook.Save保存的只是最后一个打开并编辑过的Excel文件,其他还有打开了的经过编辑未保存的Excel将导致死循环,除非加个代码.ActiveWorkbook.Saved =True或在循环前提前判断,这些只是完善以上代码的方法,(1)但保存两个以上打开着的且经过修改过的Excel文件的效果还是没有办法达到。(2)如果能判定某个具体的Excel文件(例如同目录的Book1.xls)是否打开,打开后就保存并关闭这一个文件这样的效果也能达到就好了。
以下是我修改过后的代码:(试用的朋友须记得在代码窗口中引用Excelx.0OLB)
On Error Resume Next
Dim objExcel As Excel.Application
err.Clear
Set objExcel = GetObject(,"Excel.Application")
'-------以下为提前判定是否有错误发生,如果没有Excel程序开启,则GetObject错误
If err.Number >= 1 Then
MsgBox "没有Excel程序开启"
Set objExcel = Nothing
Exit Sub
End If
If err.Number = 0 Then
If MsgBox("系统检测到您有其他Excel程序正在运行,系统将关闭它们!", vbOKCancel + vbExclamation, "警告") = vbCancel Then
Set objExcel = Nothing
Exit Sub
End If
End If
'----------------------------
Do While err.Number = 0
objExcel.ActiveWorkbook.Save '只能强制保存最后一个Excel程序
'如果关闭所有Excel(除最后一个外,其他都不自动保存)则加一句代码
ActiveWorkbook.saved=true '即不提示是否保存
objExcel.Quit
Loop
Set objExcel = Nothing |
|