如何保存来自主工作簿的副本

在这里输入图像说明

上图是我希望达到的一个简单例子。 本质上,我需要一个macros将通过列A,粘贴到单元格C2,然后保存该工作簿的副本。 因此,最终结果将是“Type1.xlsm”,“Type2.xlsm”等。 在每个macros运行结束时,到外部表单的链接被打破。

我遇到的问题是,每次保存主工作簿的副本时,macros都无法返回原始工作簿。 我需要一些我可以recursion调用macros的方法。

这是我到目前为止:

Sub test() For i = 1 To 5 If Not Range("B" & i).Value = "X" Then Range("C2").Value = Range("A" & i).Value Calculate 'updates the formula Range("B" & i).Value = "X" 'update the check ActiveWorkbook.SaveAs Filename:=Range("A" & i).Value ActiveWorkbook.Close 'INSERT CODE TO BREAK THE EXTERNAL LINK 'At this point, how do I refer back to the original workbook? End If Next i End Sub 

这就是输出结果:

在这里输入图像说明

以及“Type4.xlsm”应该是什么的一个例子:

在这里输入图像说明

我认为这应该足以做到这一点。 您可以创build一个对象variables指向主文件中的相关工作表(可能不是第一个)。 包含代码的文件可以被称为ThisWorkbook。

 Sub test() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) For i = 1 To 5 If Not ws.Range("B" & i).Value = "X" Then ws.Range("C2").Value = ws.Range("A" & i).Value Calculate 'updates the formula ws.Range("B" & i).Value = "X" 'update the check ActiveWorkbook.SaveAs Filename:=ws.Range("A" & i).Value ActiveWorkbook.Close 'At this point, how do I refer back to the original workbook? End If Next i End Sub 

使用SaveCopyAs()方法

 Sub test() For i = 1 To 5 If Not Range("B" & i).Value = "X" Then Range("C2").Value = Range("A" & i).Value Calculate 'updates the formula Range("B" & i).Value = "X" 'update the check ActiveWorkbook.SaveCopyAs Range("A" & i).Value 'At this point, your active workbook and worksheet are still the "original" ones End If Next i End Sub