【问题标题】:Close Active Workbook关闭活动工作簿
【发布时间】:2017-02-16 21:04:53
【问题描述】:

我在 Excel 宏中使用 VBA,它将数据从活动工作簿复制到第二个工作簿,关闭第二个工作簿,然后关闭第一个工作簿。问题是 ActiveWorkbook.close false 只关闭工作表而不是工作簿; Excel 仍在运行。两段代码分别测试,运行良好;当放在宏中时,关闭第一个工作簿问题就会退出。我的代码是:

Sub SacoFieldUnitDataCopy()
' SacoFieldUnitsDataCopy Macro
' This macro copies the Saco Field Units Avail_Run Stat sheet to a new workbook.
'
ActiveWorkbook.RefreshAll
Call ConvertToValues("Saco Field Units Avail_Run Stat")
Sheets("Saco Field Units Avail_Run Stat").Select
Sheets("Saco Field Units Avail_Run Stat").Copy
ChDir "C:\Saco Units Avail_Run Stats"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
    "C:\Saco Units Avail_Run Stats\Saco Unit Avail_Run Data" & "  " & VBA.Format(Date, "MM-DD-YYYY") & ".xlsx", FileFormat:= _
    xlOpenXMLWorkbook, CreateBackup:=False
Call CloseAllOtherWorkbooks
Application.Wait (Now + TimeValue("0:00:03"))
ThisWorkbook.Close False
Application.DisplayAlerts = True


End Sub

Function ConvertToValues(Sheetname As String)
'Select Sheet
Sheets(Sheetname).Select
'Select All Cells
Range("B4:C26").Select
Selection.Copy
'Paste Special to remove formulas
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
'Put cursor back on cell a1
Range("a1").Select
End Function

Function CloseAllOtherWorkbooks()
Dim WBs As Workbook
For Each WBs In Application.Workbooks
    If Not WBs.Name = ThisWorkbook.Name Then WBs.Close False
Next WBs
End Function

任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    嗯,但您是专门要求 Excel 关闭工作簿,而不是对象 Excel 应用程序本身。尝试替换此行

    ThisWorkbook.Close False
    

    有了这个:

    Application.Quit
    

    也就是说,假设两者都在同一个 Excel 实例上运行,看起来很像。

    【讨论】:

    • 当我使用“Application.Quit”时,计算机认为 Excel 意外关闭并重新启动 Excel。
    猜你喜欢
    • 2014-07-02
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多