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

时间:2016-08-02 06:13:17

标签: excel vba excel-vba macros

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

假设我从工作簿“A.xlsm”开始,在工作簿“A.xlsm”中发出命令

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

活动工作簿中的任何更改都会显示在工作簿“B.xlsm”而非“A.xlsm”中!

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

2 个答案:

答案 0 :(得分:3)

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

enter image description here

答案 1 :(得分:1)

创建工作簿变量并在保存之前为其指定ActiveWorkbook

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

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