我有这张纸,我想在每次保存原始纸张时复制它。
为实现这一点,我尝试在AfterSave
上使用ThisWorkBook
来调用模块上的宏。
代码如下:
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
只是为了避免在学习HERE时出现循环。这里是模块内的宏:
Sub CopiarNovaPlanilha()
ActiveWorkbook.SaveCopyAs "I:\CGP\DEOPEX\01 - Supervisão\10 - Alocação das equipes\Consulta Alocados\ALOCACAO TECNICOS.xlsx"
End Sub
虽然AfterSave
并非如此,但此代码运作正常,因此当我保存原始文件时,它并未按原样调用我的子文件。
有人知道这件事发生了什么吗?
答案 0 :(得分:1)
试试这个,认为这是因为你没有测试成功价值的条件。你需要检查它是真还是假
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
If Success = True Then
Application.EnableEvents = False
Call CopiarNovaPlanilha
Application.EnableEvents = True
End If
End Sub
答案 1 :(得分:0)
直接从工作簿事件中调用sub有时会导致问题。我建议你尝试的只是简单地将你的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
考虑到你没有在你的sub中使用任何变量,我不明白为什么这不起作用!
答案 2 :(得分:0)
将: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
答案 3 :(得分:0)
我遇到一个问题,那就是AfterSave事件没有触发,并且我发现仅在打开Visual Basic开发环境时才会发生。当我关闭VBA编辑器时,AfterSave事件会按预期触发。