Excel 在ThisWorkbook模块中工作时,如何更新外部工作簿?

Excel 在ThisWorkbook模块中工作时,如何更新外部工作簿?,excel,vba,save,Excel,Vba,Save,我正在尝试创建一个宏,该宏将在保存当前工作簿时更新状态跟踪工作簿。当我将宏附加到按钮时,在获取数据、打开状态跟踪器、粘贴数据、然后关闭跟踪器的功能发挥作用的同时,当我将代码导入ThisWorkbook Excel对象以便在保存时运行宏时,当我尝试选择另一个工作簿时,它似乎会中断 我的代码可以在下面找到。在第10行“Windows(“StatusTracker.xlsm”).Sheets(“Data”)中可以找到破坏代码的错误。选择“返回运行时错误“9”:下标超出范围”。请注意,第二个工作簿确实打

我正在尝试创建一个宏,该宏将在保存当前工作簿时更新状态跟踪工作簿。当我将宏附加到按钮时,在获取数据、打开状态跟踪器、粘贴数据、然后关闭跟踪器的功能发挥作用的同时,当我将代码导入ThisWorkbook Excel对象以便在保存时运行宏时,当我尝试选择另一个工作簿时,它似乎会中断

我的代码可以在下面找到。在第10行“Windows(“StatusTracker.xlsm”).Sheets(“Data”)中可以找到破坏代码的错误。选择“返回运行时错误“9”:下标超出范围”。请注意,第二个工作簿确实打开了,但由于该错误,什么也没有发生。是的,我评论了很多

代码如下:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Select the Summary tab for capturing data
Sheets("Summary Tab").Select
'Select data
ActiveSheet.Range("M12:M14").Select
'Selection.Copy
ActiveSheet.Range("A1").Select
'Open the status tracker and data tab
Workbooks.Open "C:\Users\USER\Desktop\FOLDER\StatusTracker.xlsm"
Windows("StatusTracker.xlsm").Sheets("Data").Select
'Select where the info is to be pasted and paste transposed
ActiveSheet.Range("G2").PasteSpecial Paste:=xlPasteValues
ActiveSheet.Range("G2:G4").Select
Selection.Copy
'Edit the location here to coincide with the destination location
ActiveSheet.Range("B4:D4").PasteSpecial Transpose:=True
'Format location to percentage
ActiveSheet.Range("B4:D4").NumberFormat = "0%"
'Select the original paste of the data and delete it
ActiveSheet.Range("G2:G4").Select
Selection.Delete
ActiveSheet.Range("A1").Select
'Save and close the Status Tracker
Workbooks("StatusTracker.xlsm").Close SaveChanges:=True
'Kill copy and paste command
Application.CutCopyMode = False
End Sub

我担心有人会告诉我,ThisWorkbook模块中调用的函数只会影响所选工作簿,您不能在其之外工作。如果是这样的话,有没有办法解决这个问题,这样我就可以完成这项工作?

您想用这段代码实现什么?例如,ActiveSheet.Range(“M12:M14”)没有任何变化。另外,我强烈建议不要使用.Select、.Paste和.Copy之类的代码。若要在不改进代码的情况下解决问题,您可以将Windows(“StatusTracker.xlsm”).Sheets(“数据”).Select替换为ActiveWorkbook.Sheets(“数据”).Select