Я сталкивался с подобными проблемами, когда AfterSave не запускался для людей, но их ответы не касались моей ситуации, в которой, по-видимому, причина того, что AfterSave не запущен, - это мой код BeforeSave. Оба эти набора кода работают должным образом независимо друг от друга, но я не могу заставить их работать в одной книге.
Код в настоящее время записан в «ThisWorkbook» и просто устанавливает имя сохраняемого файла в значение ячейки перед сохранением, а затем после сохранения обновляет текстовый файл, добавляя 1 к числу в текстовом файле.
Судя по моим исследованиям, проблема связана с Cancel
или Application.EnableEvents
.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.EnableEvents = False
Dim sFile As String
sFile = Range("B3").Value & ".xlsm"
Application.Dialogs(xlDialogSaveAs).Show sFile
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF
'Application.Dialogs(xlDialogSaveAs).Show(arg1:=ThisWorkbook.Sheets("Sheet1").Range("B3").Value)
Application.EnableEvents = True
Cancel = True
End Sub
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Application.EnableEvents = True
If Success Then
'Open the text file to overwrite the number in the text file
Open "\\digitalsense.com.au\FileShares\Public\_Purchase Orders\PO_Number_Generator.txt" For Output As #1
'Overwrite the number with the PO number
Print #1, Cells(1, 2)
'Close the text file
Close #1
End If
End Sub
Я должен иметь возможность щелкнуть «Сохранить» или «Сохранить как обычно», и в поле имени файла предварительно заполняется текст в ячейке B3
. После сохранения мой текстовый файл необходимо обновить, увеличив число в текстовом файле на 1.