为多个工作表运行相同的VBAmacros代码

我的下面的代码完美运行,它只是将数据从一个工作簿复制并粘贴到另一个名为“汇总工作簿”的工作簿中。 每个工作簿都对应一个测量站,在这个测量站中,我将所有工作簿中的相同单元格抽取到包含所有数据的“摘要工作簿”中。 我想知道是否有办法为每个量具工作簿重复相同的代码,所以我不必手动更改它? 我知道我将不得不改变它正在复制它的工作簿,或者我也必须手动改变它?

附加信息:

我正在复制的工作簿称为“run_10296500.xlsm”,在该工作簿中,我将取出名为“dashboard”的工作表中的数据。 “摘要工作簿”是活动的工作簿,sheet1在本工作簿中。

我有的代码如下:

Sub Hungry4Gages() Dim x As Workbook Dim y As Workbook '## Open both workbooks first: Set y = ActiveWorkbook Dim LastRow As Long For i = 1 To 50 If Cells(i, 1).Value = "Grand Total" Then Line = i Range("A" & i + 1 & ":CS50").Select Selection.Clear Exit For End If Next 'FALL [Class1!E6].Formula = "='C:\Users\dguitron\Documents\Belize and Sam Project\Class 1\[run_10296500.xlsm]dashboard'!E17" [Class1!E6] = [Class1!E6].Value [Class1!E7].Formula = "='C:\Users\dguitron\Documents\Belize and Sam Project\Class 1\[run_10296500.xlsm]dashboard'!E18" [Class1!E7] = [Class1!E7].Value [Class1!E8].Formula = "='C:\Users\dguitron\Documents\Belize and Sam Project\Class 1\[run_10296500.xlsm]dashboard'!E19" [Class1!E8] = [Class1!E8].Value End Sub 

除非我错了,否则只有代码的最后部分似乎与您的问题有关。 在这种情况下,您只需要在每个参考中更改工作簿名称,如下所示。

 [Class1!E6].Formula = "='C:\Users\dguitron\Documents\Belize and Sam Project\Class 1\[run_10296500.xlsm]dashboard'!E17" [Class1!E6] = [Class1!E6].Value [Class1!E7].Formula = "='C:\Users\dguitron\Documents\Belize and Sam Project\Class 1\[run_10296501.xlsm]dashboard'!E17" [Class1!E7] = [Class1!E7].Value [Class1!E8].Formula = "='C:\Users\dguitron\Documents\Belize and Sam Project\Class 1\[run_10296502.xlsm]dashboard'!E17" [Class1!E8] = [Class1!E8].Value 

显然,我不知道其他工作簿的名称,所以我只是增加了最后一位数字。 如果你想使这个有点松动,那么你可以创build一个工作簿名称数组,或者使用一个带有For循环的计数器来减less重新编译,但是我们需要更多地了解你的工作簿命名约定来进一步协助。