从 Word 中退出 Excel 工作簿会使 Excel 打开

Quitting Excel Workbook from Word leaves Excel open

我在 Word 中有一个宏,它正在从 Excel 文件中读取数据。 我的宏中有以下几行来打开和关闭 Excel 文件:

Excel_path = "C:\Users\....\Documents\myExcelfile.xlsx"
Dim myExcel As Object
Dim myWB As Object
Set myExcel = CreateObject("Excel.Application")
Set myWB = myExcel.Workbooks.Open(Excel_path)
With myWB.Sheets(2)
    *.... Reading in data ....*
End With

myWB.Close savechanges:=False
myExcel.Quit
End Sub

虽然我关闭了工作簿并退出了应用程序,但在成功 运行 Word 中的宏后,我不断收到消息说我的 Excel 文件被锁定以供编辑。另外,如果我关闭 Word 应用程序,我会一直有这个…… 我检查了我的 Excel 工作簿,但它没有显示任何连接。 我怎样才能真正退出我的 Excel 工作簿?

我建议你这样做:

Application.Quit

例如:

myWB.Close SaveChanges:=False

With myExcel
    .DisplayAlerts = False
    .Quit
End With

如果之后 Excel 进程仍然存在于您的进程管理器中,则使用 kill 终止 excel 进程。您可以找到 an example there.

基本上我会这样做以确保 Excel 最终关闭:

Sub Tryme()

Dim MyList As Object
Dim oServ As Object
Dim cProc As Variant
Dim oProc As Object

myWB.Close SaveChanges:=False

With myExcel
    .DisplayAlerts = False
    .Quit
End With

Set objList = GetObject("winmgmts:") _
    .ExecQuery("select * from win32_process where name='" & process & "'")

If MyList.Count > 0 Then
  Set oServ = GetObject("winmgmts:")
  Set cProc = oServ.ExecQuery("Select * from Win32_Process")
  For Each oProc In cProc
      If oProc.Name = "EXCEL.EXE" Then
         MsgBox "KILL"   ' used to display a message for testing pur
         oProc.Terminate()
      End If
  Next
End If
End Sub

不要关闭工作簿,而是:

myWB.Saved = True
myExcel.Quit

除了设置 .Saved 你还可以设置

myWB.DisplayAlerts = False