我的代码closures工作簿,但不是窗口

我有closures窗口的问题。 我正在使用Excel 2013,并在单独的窗口中打开每个工作簿。 我的代码closures工作簿,但不是窗口。 有任何想法吗? 我从另一个子部分调用这个子部分。

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”,另一个只是一个带有工作簿名称的空窗口,但工作簿已closures。

在这里输入图像描述

对于每个工作簿,Excel 2013的独立应用程序窗口的方法意味着您必须使用Application.ActiveWindow属性来closures您创build的新工作簿,而不会留下空的应用程序框架。

 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 

您已经在处理使用Worksheet.Move方法创build的ActiveWorkbook属性 。 使用ActiveWindow继续在这个范围内工作。

Application.Quit

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

请试试这个:

 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 

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