我的代码关闭工作簿但不关闭窗口

时间:2015-10-11 14:35:07

标签: excel vba excel-vba window

关闭窗口时遇到问题。我正在使用excel 2013,它在单独的窗口中打开每个工作簿。我的代码关闭工作簿但不关闭窗口。有任何想法吗?我从另一个分队打电话给这个分队。

Sub export_sheet()
    Sheets(sName).Move
    ActiveWorkbook.SaveAs Filename:=sDir & sName & ".xlsx",  FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    Workbooks(sName & ".xlsx").Close SaveChanges:=True
    Workbooks(ThisWorkbook).Activate
End Sub

我有两个Excel实例。一个包含我的代码" temp 121015.xlsm"另一个只是一个带有工作簿名称的空窗口,但工作簿已关闭。

enter image description here

4 个答案:

答案 0 :(得分:2)

Excel 2013的每个工作簿的独立应用程序窗口的方法意味着您必须使用Application.ActiveWindow property来关闭您创建的新工作库,而不会留下空的应用程序框架。

Sub export_sheet()
    Sheets(sName).Move
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=sDir & sName & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close   '<~~ this closes the new workbook created by the .Move
    ThisWorkbook.Activate
    Application.DisplayAlerts = True
End Sub

您已经在处理使用ActiveWorkbook property创建的Worksheet.Move method。使用ActiveWindow继续在此范围内工作。

答案 1 :(得分:0)

Application.Quit

这将关闭整个excel应用程序实例。在代码中使用此行之前,您需要保存更改,以防止保存提示。

答案 2 :(得分:0)

请试试这个:

Sub export_sheet()
    Sheets(sName).Move
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=sDir & sName & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    Workbooks(sName & ".xlsx").Application.Quit
    ThisWorkbook.Activate
    Application.DisplayAlerts = True
End Sub

答案 3 :(得分:-1)

最后我发现了问题。这是Application.visible=false行。如果我禁用它,它工作正常,但我真的想隐藏应用程序。