Sub fuzhi()
Dim m As Long, wb As String, n As workbook
With Sheet1.Range("a1").CurrentRegion
wb = ThisWorkbook.Path & "D:\工具箱\自学vba\提取数据.xlsx"
Set n = GetObject(wb)
m = n.Sheets("Sheet2").Range("a1").CurrentRegion.Rows.Count
n.Sheets("Sheet2").Cells(m + 1, 1).Resize(.Rows.Count, .Columns.Count).Value = .Value
End With
End Sub想把当前workbook上的内容赋值到d盘下:提取数据.xlsx,sheet2中并且在不打开:提取数据.xlsx这个workbook的前提下但调试的时候, 提示说:Set n = GetObject(wb)出错

解决方案 »

  1.   

    GetObject 参数设置不对吧。
      

  2.   

    引用的excel部件的版本不对吧?
      

  3.   

    GetObject参数应该是不对,VB6里的GetObject参数有两个,第一个是路径,第二个是类名称。第一个参数,应该是你的Excel的路径,而不是打开的文件的路径,因为你是去获得Excel对象,而不是文件对象。
    第二个参数,写Excel的类名称。
      

  4.   

    http://download.csdn.net/detail/veron_04/2341786
      

  5.   


    LZ的写法没错,当指定含后缀的文件名,可以省略ProgID,系统会根据文件类型获取对象,该对象必须是打开的。
      

  6.   

    我去看了下,这样写文件路径确实是可以,谢谢。不过,楼主的这个路径仍然是错误的。
    ThisWorkbook.Path & "D:\工具箱\自学vba\提取数据.xlsx"
      

  7.   

    3 楼的回复不错,但有一点错误。这里说明一下。函数 GetObject([pathname] [, class])GetObject 有两个参数。
    第一个参数是检索对象的文件的完整路径名称。记住,他不是对象所代表应用程序的路径,而是文件的路径。如果成功,它就会启动与指定的 pathname 相关联的应用程序,同时激活指定文件中的对象。在本问题中,也就是说,需要指定一个 Excel 格式文档的文件名。第二个参数是通过类名来指定需要获取的对象类型。对于 Excel 顶层对象:Excel.Application 对象,那么传入 class 参数为字符串"Excel.Application”即可。注意:若通过指定 pathname 参数来获取对象,那么不管该对象是否已经存在(已经被Windows加载),那么通过正确的调用都能返回所需的对象。若通过 class 参数来指定,那么必须该对象已经存在,否则函数回报错。