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

时间:2017-04-25 19:45:34

标签: excel vba excel-vba

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

其他信息:

我正在复制的工作簿称为“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

1 个答案:

答案 0 :(得分:0)

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

[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         

显然我不知道你的其他工作簿的名字所以我只是增加了最后一位数字。如果你想让它更加流畅,那么你可以创建一个工作簿名称数组或使用带有For循环的计数器来减少重复,但我们需要了解更多关于你的工作簿命名约定以进一步帮助。< / p>