【问题标题】:Close a workbook at a specific time在特定时间关闭工作簿
【发布时间】:2016-08-13 21:51:50
【问题描述】:

我到处寻找答案,但无法弄清楚。我正在寻找一种在每晚午夜自动关闭和保存工作簿的方法,因为它包含人们不断丢失的重要信息,因为他们不保存它。如果我手动单击 X 关闭 Excel,我已经关闭和保存部分,但我无法让它在预定时间完成。我使用Application.OnTime 没有任何成功。这是我用来关闭和保存工作簿的代码。如果工作簿仍然打开,我只需要代码让它在午夜运行。

Private Sub Workbook_BeforeClose(Cancel As Boolean)

  Sheet1.Activate
  Sheet1.Range("AB18:AD18").Select
  Selection.ClearContents

  ActiveWorkbook.Save

End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    我在引用工作表 .CodeName property 时遇到了问题,但在引用工作表 .Name property 时却没有。

    模块 1 代码表

    Option Explicit
    
    Sub ScheduleClose()
        Application.OnTime Now + TimeSerial(0, 0, 4), "Kamikaze"
    End Sub
    
    Sub Kamikaze()
        Debug.Print "boom"
        Application.DisplayAlerts = False
        With ThisWorkbook
            .Worksheets("Sheet1").Activate
            .Worksheets("Sheet1").Range("AB18:AD18").ClearContents
            .Save
            .Close savechanges:=False
        End With
    End Sub
    

    当然,工作簿必须已经保存(即not Book1),因为没有提供名称,但如果习惯性地尚未保存工作簿,则可以使用Workbook.SaveAs method

    这也会在 Excel 应用程序“实例”中留下“孤立的”VBA 项目。 VBA 无法自行终止,因为它必须运行才能完成命令。

    【讨论】:

      猜你喜欢
      • 2018-11-07
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多