closures所有的Excel工作簿(excel的几个实例可能会打开)

我试图closures所有的Excel工作簿,当我发布一个新的personal.xlsb或当用户需要升级到最新版本。 下面是closures所有excel工作簿的代码,但它只在运行时closuresPERSONAL.XLSB:

Public Sub CloseAll() Dim wb As Workbook For Each wb In Application.Workbooks() wb.Close True ' Or False if you don't want changes saved Next wb Application.Quit End Sub 

这里是发布代码,即将我的personal.xlsb复制到服务器:(可能对其他人有用,因此发布在这里)

 Sub publish() Call Settings.init 'Contains excelMakroVersjon="101" Dim hFile As Long Dim FileContents1 As String Dim versionNumber As String Dim strFile1 As String strFile1 = "Z:\Dokumentstyring\LatestVersion\CopyMacro.bat" Kill strFile1 Kill "Z:\Dokumentstyring\LatestVersion\PERSONAL*" versionNumber = Left(excelMakroVersjon, 1) & "." & Right(excelMakroVersjon, Len(excelMakroVersjon) - 1) FileContents1 = "ping -n 5 127.0.0.1 > nul " & vbNewLine _ & "echo f | xcopy /f /y /z ""%APPDATA%\Microsoft\Excel\XLSTART\PERSONAL.XLSB"" ""Z:\Dokumentstyring\LatestVersion\PERSONAL_" & versionNumber & ".XLSB"" " Open strFile1 For Binary As #1 Put #1, , FileContents1 Close #1 Shell "cmd.exe /k " & strFile1 Call CloseAll End Sub 

这里是检查你是否有版本的代码,这也需要使用closeAll方法:

 Sub checkLatestVersion() Dim temp, temp2 As Variant Call Settings.init temp = Dir("Z:\Dokumentstyring\LatestVersion\Personal*") temp = Mid(temp, 8, 4) temp2 = val(Replace(temp, ".", "")) If temp2 > val(Settings.excelMakroVersjon) Then Select Case MsgBox("Upgrade to latest Version: " & temp, vbYesNo) Case vbYes Shell "cmd.exe /k Z:\Dokumentstyring\LatestVersion\updateExcel.bat" Call CloseAll Case vbNo 'Do nothing. End Select End If End Sub 

试试这个…(小心,下面的代码也closures当前的Excel文件!)

 Dim oServ As Object Dim cProc As Variant Dim oProc As Object Set oServ = GetObject("winmgmts:") Set cProc = oServ.ExecQuery("Select * from Win32_Process") For Each oProc In cProc If oProc.Name = "EXCEL.EXE" Then MsgBox "Close?" errReturnCode = oProc.Terminate() End If Next