【问题标题】:Close Excel file after a SaveCopyAs was created on desktop在桌面上创建 SaveCopyAs 后关闭 Excel 文件
【发布时间】:2020-01-21 13:35:44
【问题描述】:

我有以下 VBA:

Sub Create_Sent_File()
ActiveWorkbook.SaveCopyAs "C:\Users\" & Environ("Username") & "\Desktop\" & "Sent_File" & ".xlsm"
ActiveWorkbook.Close SaveChanges:=False
End Sub

代码在用户桌面上创建一个名为"Sent_File" 的新文件。

到目前为止,这一切都很好。


但是,创建文件后,我想关闭原始 Excel 文件。
如果我打开三个 Excel 文件然后关闭其中一个文件,我会采用完全相同的方式。
因此,我尝试使用这个公式:

ActiveWorkbook.Close SaveChanges:=False

现在,问题是工作簿已关闭,但 Excel 不知何故仍处于打开状态:

我需要在我的代码中进行哪些更改:
a) 我运行 VBA 的当前工作簿已关闭。
b) Excel 中的其他工作簿保持打开状态。
c) 如屏幕截图所示,Excel 没有保持打开状态。

【问题讨论】:

  • 旁注:"C:\Users\" & Environ("Username") - 你可以使用Environ("Userprofile")
  • 你从哪里运行代码?
  • 我从模块运行它
  • 在工作簿关闭后尝试这些方法if workbooks.count=0 then application.quit

标签: excel vba


【解决方案1】:

您快到了,但您需要在触发关闭之前引用父应用程序。

Sub Create_Sent_File()
    Dim xlParent As Excel.Application

    ActiveWorkbook.SaveCopyAs "C:\Users\" & Environ("Username") & "\Desktop\" & "Sent_File" & ".xlsm"
    ActiveWorkbook.Saved = False

    Set xlParent = ActiveWorkbook.Parent
    xlParent.Quit
End Sub

将当前工作簿的 Saved 标志设置为 False,您可以关闭主机 Excel 应用程序而无需触发任何确认框。

如果您有其他打开的工作簿还想在不确认的情况下关闭,则需要通过 Workbooks 集合,将每个工作簿的 Saved 属性设置为 False,然后再继续退出主机Excel 应用程序。

【讨论】:

    猜你喜欢
    • 2016-07-11
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 2014-07-21
    • 1970-01-01
    相关资源
    最近更新 更多