用于对另一个具有多个工作表的工作簿的值求和的宏

Macro to sum values from another Workbook with Multiple Sheets

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

另一个工作簿包含 120 个 sheets。我想从每个 sheet 中获取特定值,并将其与其余值相加。所有 120 个值的单元格引用都是固定的,例如 J3。

另一件值得一提(也许)的事情是 sheet 代码名称没有组织(即 Sheet 1 一直到 Sheet 120),有几个sheets added/removed介于两者之间。

现在我正在

Run Time Error 424 Object Required

Sub SumProject1P()
    Dim Project1P As Workbook
    Dim reserves
    Dim WS_Count As Integer
    Dim i As Integer
    Dim V As Variant

    Set Project1P = Workbooks.Open("FILE PATH")
    WS_Count = Workbook.Worksheets.Count
    V = Workbook.Worksheets
    reserves = sumrange(Workbook.Worksheets(V).range(Cells(1, 8)))
End Sub


Function sumrange(range)
    summ = 0
    For i = 1 To WS_Count
        summ = summ + reserves
    Next
    reserves = summ
End Function

我希望收到反馈和意见。

给你

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

您收到 object required 错误,因为您没有对任何对象使用 Worsheets.count 函数。

您的代码:

Set Project1P = Workbooks.Open("FILE PATH")
    WS_Count = Workbook.Worksheets.Count

您需要为 Project1P 个对象使用此函数。

 Set Project1P = Workbooks.Open("FILE PATH")
    WS_Count = Project1P .Worksheets.Count 

Santosh已经给了你最简单的方法。不过,如果您想使用 Function 来做到这一点,请尝试以下方法。

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