У меня много раз была проблема с моим VBA для сохранения и закрытия файла, иногда он работает, а иногда и не работает.Я использую Task Scheduler для открытия файла и жду 30 минут, чтобы закрыть и сохранить файл.Иногда меня просили отладить код в строке
If wb.Name = GlobalBook.Name Then
Пожалуйста, дайте мне знать, если мне нужно что-то обновить, чтобы это работало.Спасибо.
Код модуля 1:
'Global variables
Public RunWhen As Double
Public Const cRunIntervalSeconds = 1800 ' seconds (set to 30 minutes)
Public Const cRunWhat = "SaveClose" ' the name of the procedure to run
Public GlobalBook As Workbook
'Start Timer using interval set in global variables
Sub StartTimer()
Set GlobalBook = ActiveWorkbook
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _
Schedule:=True
End Sub
'Stop the Timer whenever the workbook is closed prematurely
Public Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _
Schedule:=False
End Sub
'Close the workbook automatically once the Timer has expired
Public Sub SaveClose()
'Time is up, workbook will save and close automatically
Dim wb As Workbook
For Each wb In Workbooks
'Check to see if workbook is still open
If wb.Name = GlobalBook.Name Then
Set wb = Application.Workbooks(GlobalBook.Name)
'Close workbook and Save Changes
wb.Close SaveChanges:=True
End If
Next
End Sub
Код этой рабочей книги:
'When the workbook is opened, call StartTimer()
Public Sub Workbook_Open()
Run "StartTimer"
End Sub
'Detect if the workbook is closed
Public Sub Workbook_BeforeClose(Cancel As Boolean)
'Cancel Saveclose
Run "StopTimer"
End Sub