Vba 宏,用于对另一个包含多个工作表的工作簿中的值求和

Vba 宏,用于对另一个包含多个工作表的工作簿中的值求和,vba,excel,worksheet,Vba,Excel,Worksheet,我正在处理一个项目,该项目要求我对另一个excel工作簿中的多个值求和 另一个工作簿包含,比如说,120页。我想从每张纸上取一个特定的值,然后和其他的一起求和。所有120个值的单元格引用都是固定的,例如J3 另一件值得一提的事情(可能)是,工作表代码名称没有组织(即工作表1一直到工作表120),其间添加/删除了多张工作表 现在我有点累了 运行时错误424需要对象 我希望收到反馈和意见。给你 Sub SumProject1P() Dim Project1P As Workbook Dim res

我正在处理一个项目,该项目要求我对另一个excel工作簿中的多个值求和

另一个工作簿包含,比如说,120页。我想从每张纸上取一个特定的值,然后和其他的一起求和。所有120个值的单元格引用都是固定的,例如J3

另一件值得一提的事情(可能)是,工作表代码名称没有组织(即工作表1一直到工作表120),其间添加/删除了多张工作表

现在我有点累了

运行时错误424需要对象

我希望收到反馈和意见。

给你

Sub SumProject1P()

Dim Project1P As Workbook
Dim reserves As Long
Dim WS_Count As Integer
Dim filePath As String

    filePath = "Enter you file path"

    Set Project1P = Workbooks.Open(filePath, ReadOnly:=True)
    WS_Count = Project1P.Worksheets.Count


   For i = 1 To WS_Count
    If Sheets(i).range("J3") <> "" And IsNumeric(Sheets(i).range("J3")) Then
        reserves = reserves + Sheets(i).range("J3")
    End If
   Next

   MsgBox "Total of all sheets :" & reserves
End Sub
Sub-SumProject1P()
Dim Project1P作为工作簿
只要
Dim WS_计数为整数
将文件路径设置为字符串
filePath=“输入您的文件路径”
Set Project1P=Workbooks.Open(文件路径,只读:=True)
WS_Count=Project1P.Worksheets.Count
对于i=1到WS\u计数
如果表(i).range(“J3”)为数字(表(i).range(“J3”)),则
储量=储量+表(i).范围(“J3”)
如果结束
下一个
MsgBox“所有表的总计:”&储量
端接头

由于未对任何对象使用
工作表。count
函数,因此您将获得所需的
对象
错误

您的代码:

Set Project1P = Workbooks.Open("FILE PATH")
    WS_Count = Workbook.Worksheets.Count
您需要将此函数用于
Project1P
对象

 Set Project1P = Workbooks.Open("FILE PATH")
    WS_Count = Project1P .Worksheets.Count 
桑托什已经给了你最简单的方法。不过,如果您想使用
功能
执行此操作,请尝试以下操作

Sub Sum()

Dim Project1P As Workbook
    Dim WS_Count As Integer
    Dim i As Integer
    Dim V As Variant
    Set Project1P = Workbooks.Open("File path")
    WS_Count = Project1P.Worksheets.Count
    sumrange (WS_Count)

End Sub

Function sumrange(TotalSheets As Integer)

     Dim reserves As Integer

     For i = 1 To TotalSheets
         If Sheets(i).range("J3") <> "" And IsNumeric(Sheets(i).range("J3")) Then
             reserves = reserves + Sheets(i).range("J3")
        End If
     Next

    MsgBox "Total of all sheets :" & reserves

End Function
subsum()
Dim Project1P作为工作簿
Dim WS_计数为整数
作为整数的Dim i
Dim V作为变体
Set Project1P=Workbooks.Open(“文件路径”)
WS_Count=Project1P.Worksheets.Count
sumrange(WS_计数)
端接头
函数sumrange(TotalSheets为整数)
作为整数的Dim reserves
对于i=1到总张数
如果表(i).range(“J3”)为数字(表(i).range(“J3”)),则
储量=储量+表(i).范围(“J3”)
如果结束
下一个
MsgBox“所有表的总计:”&储量
端函数

非常感谢Santosh!它确实给了我一个输出,但结果是错误的。它给了我一个575,但我期待一个578。在这种情况下,单元格J3可能有数字存储为文本,请修复并重试。谢谢Santosh的耐心和帮助!我在所有工作表中将单元格从“常规”设置为“数字”。但答案仍然不正确。你认为这与我在帖子中提到的页码问题有关吗?我不认为这是因为页码问题。有没有隐藏的表格?好的,在我宣布储量为变量后,它就起作用了。谢谢你们两位!谢谢南丹A!
Sub Sum()

Dim Project1P As Workbook
    Dim WS_Count As Integer
    Dim i As Integer
    Dim V As Variant
    Set Project1P = Workbooks.Open("File path")
    WS_Count = Project1P.Worksheets.Count
    sumrange (WS_Count)

End Sub

Function sumrange(TotalSheets As Integer)

     Dim reserves As Integer

     For i = 1 To TotalSheets
         If Sheets(i).range("J3") <> "" And IsNumeric(Sheets(i).range("J3")) Then
             reserves = reserves + Sheets(i).range("J3")
        End If
     Next

    MsgBox "Total of all sheets :" & reserves

End Function