当前位置:编程学习 > VB >>

GetObject 函数问题 急急急!坐等!

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)出错
GetObject 参数设置不对吧。 引用的excel部件的版本不对吧? GetObject参数应该是不对,VB6里的GetObject参数有两个,第一个是路径,第二个是类名称。

第一个参数,应该是你的Excel的路径,而不是打开的文件的路径,因为你是去获得Excel对象,而不是文件对象。
第二个参数,写Excel的类名称。 http://download.csdn.net/detail/veron_04/2341786
引用 3 楼 aisac 的回复:
GetObject参数应该是不对,VB6里的GetObject参数有两个,第一个是路径,第二个是类名称。

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


LZ的写法没错,当指定含后缀的文件名,可以省略ProgID,系统会根据文件类型获取对象,该对象必须是打开的。
引用 5 楼 worldy 的回复:
引用 3 楼 aisac 的回复:
GetObject参数应该是不对,VB6里的GetObject参数有两个,第一个是路径,第二个是类名称。

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


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

我去看了下,这样写文件路径确实是可以,谢谢。

不过,楼主的这个路径仍然是错误的。
ThisWorkbook.Path & "D:\工具箱\自学vba\提取数据.xlsx" 回6L这个确实应该是错误,看粗心了,呵呵 3 楼的回复不错,但有一点错误。这里说明一下。

函数 GetObject([pathname] [, class])

GetObject 有两个参数。
第一个参数是检索对象的文件的完整路径名称。记住,他不是对象所代表应用程序的路径,而是文件的路径。如果成功,它就会启动与指定的 pathname 相关联的应用程序,同时激活指定文件中的对象。在本问题中,也就是说,需要指定一个 Excel 格式文档的文件名。

第二个参数是通过类名来指定需要获取的对象类型。对于 Excel 顶层对象:Excel.Application 对象,那么传入 class 参数为字符串"Excel.Application”即可。

注意:若通过指定 pathname 参数来获取对象,那么不管该对象是否已经存在(已经被Windows加载),那么通过正确的调用都能返回所需的对象。若通过 class 参数来指定,那么必须该对象已经存在,否则函数回报错。
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,