Excel VBA aftersave事件不起作用

我有这张表,我想每次保存原始表单时都要复制一份。

为了达到这个目的,我试图在ThisWorkBook上使用AfterSave来调用模块上的macros。

代码如下:

 Private Sub Workbook_AfterSave(ByVal Success As Boolean) If Success Then Application.EnableEvents = False Call CopiarNovaPlanilha Application.EnableEvents = True End If End Sub 

Application.EnableEvents只是为了避免在这里学到的循环。 这里是模块内的macros:

 Sub CopiarNovaPlanilha() ActiveWorkbook.SaveCopyAs "I:\CGP\DEOPEX\01 - Supervisão\10 - Alocação das equipes\Consulta Alocados\ALOCACAO TECNICOS.xlsx" End Sub 

虽然AfterSave不是,但是这个代码工作正常,所以当我保存我的原始文件时,它不会调用我的子版本。

任何人都知道这个事件发生了什么?

试试这个,认为这是因为你没有testing成功价值的条件。 你需要检查它是真的还是假的

 Private Sub Workbook_AfterSave(ByVal Success As Boolean) If Success = True Then Application.EnableEvents = False Call CopiarNovaPlanilha Application.EnableEvents = True End If End Sub 

将:application.events = false放在CopiarNovaPlanilha()中:

  Private Sub Workbook_AfterSave(ByVal Success As Boolean) Call CopiarNovaPlanilha End Sub 

对于该模块:

 Sub CopiarNovaPlanilha() Application.EnableEvents = False ActiveWorkbook.SaveCopyAs "file location" Application.EnableEvents = True End Sub 

直接从工作簿事件调用子有时会导致问题。 我build议你尝试的只是把你的sub的内容放入AfterSave事件中,像这样:

 Private Sub Workbook_AfterSave(ByVal Success As Boolean) Application.EnableEvents = False ActiveWorkbook.SaveCopyAs "I:\CGP\DEOPEX\01 - Supervisão\10 - Alocação das equipes\Consulta Alocados\ALOCACAO TECNICOS.xlsx" Application.EnableEvents = True End Sub 

考虑到你没有使用任何variables内的子,我不明白为什么这不起作用!