编译错误:需要对象(VBA)

时间:2018-04-14 21:15:35

标签: excel vba

我的代码应该从一个工作簿中获取联系信息,为列表中的每个人创建一个新的工作簿并传输他们的信息。当我尝试运行我的宏时,它在Set pathOrig = ActiveWorkbook.path行给出了一个错误。它说

  

编译错误:需要对象

任何人都知道我的错误是什么? (对不起我的代码中的法语部分)

Sub generateFichier()

    Dim orig, dest As Range
    Dim classOrig, classDest As Workbook
    Dim pathOrig As String
    Dim nom, prenom, faitPar As String
    Dim sommeCap, sommeCapActuel As Long

    Set classOrig = ActiveWorkbook
    Set pathOrig = ActiveWorkbook.path

    Set orig = Sheets("clients").Range("A2")

    For i = 1 To 7 Step 1

        nom = orig.Offset(i, 0).Value
        prenom = orig.Offset(i, 1).Value
        sommeCap = orig.Offset(i, 3).Value + orig.Offset(i, 5).Value
        sommeCapActuel = orig.Offset(i, 4).Value + orig.Offset(i, 7).Value
        faitPar = classOrig.Sheets(1).PageSetup.RightFooter

        Dim nomFichier As String
        nomFichier = nom & ".xls"

        Set classDest = Workbooks.Add(pathOrig & "\" & nomFichier)
        classDest.Sheets(1).Range("B1").Value = nom
        classDest.Sheets(1).Range("B2").Value = prenom
        classDest.Sheets(1).Range("A5").Value = sommeCap
        classDest.Sheets(1).Range("B5").Value = sommeCapActuel
        classDest.Sheets(1).Range("B13").Value = faitPar


        For j = 1 To 6 Step 1

            Select Case j

                Case 1 To 3

                    classOrig.Cells(i, j).Value = classDest.Sheets(1).Cells(j + 7, 2).Value

                Case 4 To 6

                    classOrig.Cells(i, j).Value = classDest.Sheets(1).Cells(j + 4, 3).Value

            End Select

        Next j

        classDest.SaveAs Filename:=pathOrig & "\" & nomFichier, FileFormat:=xlNormal

    Next i

End Sub

2 个答案:

答案 0 :(得分:1)

工作簿的路径是包含工作簿的文件夹的字符串,而不是工作簿本身。因此,您不要将对象var设置为.Path;您可以简单地将.Path分配给字符串变量。

dim pathOrig as string
pathOrig = activeworkbook.path
debug.print pathOrig 

答案 1 :(得分:1)

您不需要“设置”字符串,pathOrig只是一个字符串,而不是像classOrig这样的工作簿对象。

只需删除该行中的Set语句即可。