Excel SaveAs更改活动工作簿 – 如何保存并保持活动工作簿处于活动状态?

在MS-Excel 2007macros中,我想在开始更新之前将工作簿(包含macros)保存到另一个工作簿。 但是,当我执行SaveAs时,当前的工作簿变成了保存的工作簿,而不是我盯着的原始工作簿。

说我开始工作簿“A.xlsm”,在工作簿“A.xlsm”我发出命令

With ActiveWorkbook .SaveAs FileName:=ThisWorkbook.Path + "\" & "B.xlsm" Close 0 End With 

活动工作簿中的任何更改都出现在工作簿“B.xlsm”而不是“A.xlsm”中!

问题在工作簿“A.xlsm”中,如何在不更改活动工作簿的情况下保存副本?

SaveCopyAs保存工作簿的副本,而不更改任何引用。

ActiveWorkbook.SaveCopyAs FileName:=ActiveWorkbook.Path + "\" & "B.xlsm"


 Sub TestSaveAs() Dim xlWB As Workbook Set xlWB = ActiveWorkbook ActiveWorkbook.SaveCopyAs Filename:=ActiveWorkbook.Path + "\" & "B.xlsm" Debug.Print "ActiveWorkbook.FullName: " & ActiveWorkbook.FullName Debug.Print "xlWB.FullName: " & xlWB.FullName End Sub 

在这里输入图像说明

创build工作簿variables并在保存之前将ActiveWorkbook分配给它

 Dim xlWB as Workbook Set xlWB = ActiveWorkbook xlWB.SaveAs FileName:=ThisWorkbook.Path & "/" & "B.xlsm" 

然后,您可以参考xlWB而不是ActiveWorkbook ,它始终保持相同的工作簿