如何保存来自主工作簿的副本
上图是我希望达到的一个简单例子。 本质上,我需要一个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