首页 > 解决方案 > VBA关闭任何打开的excel文件和excel应用程序

问题描述

我已经尝试了两天来找到一种使用 VBscript 关闭 excel 的方法。

我在任务调度程序中设置了一个调用restAPI的vbscript,然后打开excel,更新名为RepublicReport的工作簿中的数据模型。(这很好用)

数据模型更新使用 THISWORBOOK 事件触发文件保存。(这很好用)

然后 THISWORKBOOK 事件 SAVE 触发创建 Excel 工作表的新副本的宏,并将工作表通过电子邮件发送给客户端。(这很好用)

然后它关闭excel文件RepublicREport(这很好用)

然后是 SUPPOSE 一起关闭 excel(不工作!!!!)。

出于某种原因,在它全部运行之后,它会打开一个新的 Excel 实例,备份为 BOOK1.xls。我创建了一个 vbscript 以在 15 分钟后完成任务并再次关闭 excel,但它没有关闭文件。

这是我的 THISWORKBOOK 保存事件的代码。(是的,我有两条单独的代码试图关闭工作簿)。它会关闭 RepublicReport 工作簿,但会打开新版本的 Excel 作为 Book1.xls

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim objExcel
Dim objWorkbook

Call Macro2

Application.DisplayAlerts = False
ThisWorkbook.Close
ThisWorkbook.Saved = True
On Error Resume Next
Set objExcel = GetObject("C:\Republic_Standard_Report\RepublicReport.xlsm").Application
Set objWorkbook = objExcel.Workbooks("RepublicReport.xlsm")
If (Not objWorkbook Is Nothing) Then
objExcel.Workbooks("RepublicReport.xlsm").Saved = True
objExcel.Workbooks("RepublicReport.xlsm").Close
End If
On Error GoTo 0
objExcel.Quit
End Sub

这是我的 vbScript 来关闭位于 TaskScheduler 的单独实例中的 excel。

Dim objExcel
Dim objWorkbook

On error resume next
Set objExcel = CreateObject("Excel.Application")  'Reference to ANY excel file on local pc
set objWorkbook = objExcel.Workbooks("Book1.xlsx") 'Name of file you want to close
if (not objWorkbook is nothing) then

objExcel.Workbooks("Book1.xlsx").Saved=True
objExcel.Workbooks("Book1.xlsx").Close
end if
on error goto 0
objExcel.quit

我仍在学习,但我尝试了在互联网上找到的几种解决方案。最初,当我将它们嵌套在同一个任务中时,它们相互跳跃。所以我把他们分开,认为这会有所帮助,非常欢迎任何建议。先感谢您!!!

标签: excelvba

解决方案


推荐阅读