Vba Vlookup:Object不';不支持此属性或方法

Vba Vlookup:Object不';不支持此属性或方法,vba,excel,Vba,Excel,2015年9月19日更新: 为了解决提出的问题,我将sub分为三个部分 将文件从一个位置复制到另一个位置 将(使用另存为方法)xls转换为xlsx。可以打开该文件 vlookup值并将其打印在指定的单元格上 我设法完成了前两项任务,第二项任务来自帮助: 但是,会弹出错误:当我运行 以前: 您好,这是我第一次问问题,我已经尽了最大的努力坚持给出的提示和指导方针。 注意:假设宏在a.xlsx中执行 我编写此宏的目的是: 从路径a复制文件(abc.xls) 将文件(abc.xls)粘贴到路径B 将

2015年9月19日更新: 为了解决提出的问题,我将sub分为三个部分

  • 将文件从一个位置复制到另一个位置
  • 将(使用另存为方法)xls转换为xlsx。可以打开该文件
  • vlookup值并将其打印在指定的单元格上 我设法完成了前两项任务,第二项任务来自帮助:

    但是,会弹出错误:当我运行


    以前:

    您好,这是我第一次问问题,我已经尽了最大的努力坚持给出的提示和指导方针。 注意:假设宏在a.xlsx中执行

    我编写此宏的目的是:

  • 从路径a复制文件(abc.xls)
  • 将文件(abc.xls)粘贴到路径B
  • 将文件从abc.xls重命名为abc.xlsx
  • 执行vlookup查找abc.xlsx中的值,并返回a.xlsx指定单元格中的值

    我查看了论坛上的一些评论,据说只要是xlsx格式,就可以对关闭的excel工作簿执行vlookup。我不知道这是怎么回事

    同样,我希望您能提供任何帮助

    是“当前在Microsoft Excel应用程序中打开的所有工作簿对象的集合。”。它不包括硬盘上未打开的工作簿

    如果您确定要访问已关闭的工作簿,请将公式写入工作表单元格,以处理与未打开工作簿的连接。通过在打开的工作表上计算本机工作表公式,您不必打开外部工作簿。可以通过将公式还原为其返回值来删除公式

    dim extVLOOKUP as string
    If FSO.FileExists(FilePath & sFile) Then
        With Sheets("Data Pointer")
            extVLOOKUP = "=VLOOKUP(""" & .Cells(i + 2, "N") & """, '" & FilePath & "[" & sFile & "]Sheet1'!$A:$L, 12, FALSE)"
            'Debug.Print extVLOOKUP  '<~~ uncomment to check the formula
            '.Cells(i + 5, "B") = Application.Evaluate(extVLOOKUP)
            .Cells(i + 5, "B").Formula = extVLOOKUP
            .Cells(i + 5, "B") = .Cells(i + 5, "B").Value
        End With
    End If
    
    dim extVLOOKUP作为字符串
    如果存在FSO.files(FilePath&sFile),则
    带图纸(“数据指针”)
    extVLOOKUP=“=VLOOKUP(”&.Cells(i+2,“N”)&“,”&.FilePath&“[”&sFile&“]Sheet1'!$A:$L,12,FALSE)”
    “Debug.Print extVLOOKUP”是“当前在Microsoft Excel应用程序中打开的所有工作簿对象的集合。”。它不包括硬盘上未打开的工作簿

    如果您确定要访问已关闭的工作簿,请将公式写入工作表单元格,以处理与未打开工作簿的连接。通过在打开的工作表上计算本机工作表公式,您不必打开外部工作簿。可以通过将公式还原为其返回值来删除公式

    dim extVLOOKUP as string
    If FSO.FileExists(FilePath & sFile) Then
        With Sheets("Data Pointer")
            extVLOOKUP = "=VLOOKUP(""" & .Cells(i + 2, "N") & """, '" & FilePath & "[" & sFile & "]Sheet1'!$A:$L, 12, FALSE)"
            'Debug.Print extVLOOKUP  '<~~ uncomment to check the formula
            '.Cells(i + 5, "B") = Application.Evaluate(extVLOOKUP)
            .Cells(i + 5, "B").Formula = extVLOOKUP
            .Cells(i + 5, "B") = .Cells(i + 5, "B").Value
        End With
    End If
    
    dim extVLOOKUP作为字符串
    如果存在FSO.files(FilePath&sFile),则
    带图纸(“数据指针”)
    extVLOOKUP=“=VLOOKUP(”&.Cells(i+2,“N”)&“,”&.FilePath&“[”&sFile&“]Sheet1'!$A:$L,12,FALSE)”
    
    “Debug.Print extVLOOKUP”
    将sDFolder和sFile命名为sDFolder和Sheets(“数据指针”).Cells(i+2,“AI”)
    您不能直接将
    xls
    文件重命名为
    .xlsx
    。我的意思是,您可以重命名,但它将不是有效的xlsx文件
    FileName=Sheets(“数据指针”).cell(I+2,“AI”)
    您在
    cell
    cell(I+5,“C”).Value=WorksheetFunction.VLookup(Sheets(“数据指针”).Cells(I+2,“AI”)、工作簿(FileName)中缺少
    s
    s
    单元格(I+5,“C”).Value=WorksheetFunction.VLookup(Sheets)(“数据指针”).Cells”(“数据指针”).Cells”).Cells(I+2,“AI”)、
    您将新文件称为
    工作簿(文件名)
    ,但该工作簿尚未打开。修复我提到的所有这三件事,然后我们将在连接
    sSFolder&sFile
    sDFolder&sFile
    时采用它。根据注释中的示例,没有连接反斜杠(例如
    Chr(92)
    )。@Jeeped:我也考虑过这一点,但我猜OP在单元格
    表中已经指定了这一点(“数据指针”).Cells(i+2,“AG”)
    因为文件被正确重命名:)
    将sDFolder&sFile命名为sDFolder&Sheets(“数据指针”).Cells(i+2,“AI”)
    您不能直接将
    xls
    文件重命名为
    .xlsx
    。我的意思是,您可以重命名,但它将不是有效的xlsx文件
    FileName=Sheets(“数据指针”).cell(I+2,“AI”)
    您在
    cell
    cell(I+5,“C”).Value=WorksheetFunction.VLookup(Sheets(“数据指针”).Cells(I+2,“AI”)、工作簿(FileName)中缺少
    s
    s
    单元格(I+5,“C”).Value=WorksheetFunction.VLookup(Sheets)(“数据指针”).Cells”(“数据指针”).Cells”).Cells(I+2,“AI”)、
    您将新文件称为
    工作簿(文件名)
    ,但该工作簿尚未打开。修复我提到的所有这三件事,然后我们将在连接
    sSFolder&sFile
    sDFolder&sFile
    时采用它。根据注释中的示例,没有连接反斜杠(例如
    Chr(92)
    )。@Jeeped:我也考虑过这一点,但我猜OP在单元格
    表中已经指定了这一点(“数据指针”).Cells(i+2,“AG”)
    由于文件已正确重命名:)我将在周一再次运行代码并对此进行更新。它可以工作!谢天谢地。单元格(i+2,“N”)中的值不是数字。所以,我保留引用的原样。谢谢!刚意识到执行vlookup不需要将文件转换为xlsx。还有一个好消息。我将在周一再次运行代码,并对此进行更新。它很有效!谢天谢地。单元格(i+2,“N”)中的值不是数字。所以,我保留引用的原样。谢谢!刚意识到执行vlookup不需要将文件转换为xlsx。又是一个好消息。