objExcel.Quit不起作用

时间:2018-05-05 07:03:20

标签: excel vba excel-vba vbscript

我正在尝试一个应该打开Excel,打开工作簿,运行宏而不是关闭所有内容的VBScript。

Dim objExcel, xlBook

Set objExcel = CreateObject("Excel.Application")
Set xlBook = objExcel.Workbooks.Open ("path to the xlsm file")

objExcel.Visible = True

objExcel.Run xlBook.name & "!Modulo1.Macro1"
WScript.Sleep 20000

objExcel.Quit

一切正常,Excel打开xlsm并运行宏,但在关闭工作簿后(这包含在宏中),Excel仍然打开。

似乎objExcel.Quit无效。

我在Windows 7中使用Excel 2016。

这些是宏的最后一行:

    Application.DisplayAlerts = False

    ChDir "C:\Users\" & UserName & "\Google Drive\Shopify"
    ActiveWorkbook.SaveAs Filename:= "C:\Users\" & UserName & _
        "\Google Drive\Shopify\Shopify.xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

    Workbooks("Shopify.xlsx").Close
End Sub

2 个答案:

答案 0 :(得分:1)

我建议删除关闭,即

Application.DisplayAlerts = False

ChDir "C:\Users\" & UserName & "\Google Drive\Shopify"
ActiveWorkbook.SaveAs Filename:= _
    "C:\Users\" & UserName & "\Google Drive\Shopify\Shopify.xlsx", FileFormat:= _
    xlOpenXMLWorkbook, CreateBackup:=False
' As you are doing a saveas the workbook Shopify.xlsx becomes the active one
' Closing it the vb script menas you lose the connection you opened via
' objExcel.Run xlBook.name & "!Modulo1.Macro1"
'Workbooks("Shopify.xlsx").Close

End Sub

答案 1 :(得分:-1)

我打算在这里走出困境并打赌Excel 关闭。

你只是不等待完整的20秒你告诉Excel等待。也许你打算暂停2秒(2000 ms)。

我不确定计时器是否正在为另一个putpose服务,但删除该行并再试一次,你会发现你的窗口按预期关闭。

故障排除的第一步是将代码分成更小的部分,逐一取出部件,直到明确哪个命令或部分是罪魁祸首。

传奇 Chip Pearson 中调试VBA located here有一些很好的建议。