VB6访问Excel内ThisWorkbook下声明的对象

gooore 2011-10-13 01:20:42
您好,我现在用外部程序访问到Excel,然后需要对Excel内ThisworkBook下声明的Public成员对象进行实例化,

请教您该怎么实现,

在线急等,万分感激
...全文
361 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyserver 2011-10-13
  • 打赏
  • 举报
回复
比如:
在工作簿Book1.xls的Sheet1模块的开始处,加入代码Public i as integer,然后用以下代码即可访问Sheet1.i变量:
Sub main()
Dim xlApp As Excel.Application

Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open "D:\Backup\我的文档\Book1.xls"
xlApp.Visible = True
xlApp.Workbooks(1).Sheets(1).i = 200
Debug.Print xlApp.Workbooks(1).Sheets(1).i
End Sub
lyserver 2011-10-13
  • 打赏
  • 举报
回复
如果你不放在thisworkbook里,而是放在sheet中,才可以实现外部初始化。
lyserver 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gooore 的回复:]
感谢,

请问您是不是非常确定以及肯定不能在外面初始化?



引用 5 楼 lyserver 的回复:
不能直接初始化,必须在ThisworkBook写一个公共的初始方法,比如:
VBA中ThisworkBook模块里的代码
Public ObjInThisWorkBook As Object

Public Sub CreateObj()
Set ObjInThisWo……
[/Quote]
据我所知,是这样的。
gooore 2011-10-13
  • 打赏
  • 举报
回复
感谢,

请问您是不是非常确定以及肯定不能在外面初始化?


[Quote=引用 5 楼 lyserver 的回复:]
不能直接初始化,必须在ThisworkBook写一个公共的初始方法,比如:
VBA中ThisworkBook模块里的代码
Public ObjInThisWorkBook As Object

Public Sub CreateObj()
Set ObjInThisWorkBook = CreateObject("Wscript.Shell")
End Sub
保存Excel。
……
[/Quote]
无·法 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gooore 的回复:]

感谢您的回复,我的主程序是VB6写的,调用Excel对象,然后Excel的Thisworkbook下声明了一格对象,

VB code
Public ObjInThisWorkBook as object


但是ObjInThisWorkBook不在Excel内实例化,我需要用VB6的主程序把它实例化。

引用 2 楼 sysdzw 的回复:
他不是操作具体的cell表格之类的……
[/Quote]看看能不能这样设置 set xx.ObjInThisWorkBook = newobj
这个xx你自己试吧,估计是个工作簿或者model,要访问他们应该在vba里面有方法的,在vba里面按F2,那么一大堆类,找找看总有方法的。
lyserver 2011-10-13
  • 打赏
  • 举报
回复
如果想在不打开Excel文档的情况下,则使用CreateObject方法,VB6代码修改如下:
 Dim xlApp As Excel.Application

Set xlApp = New Application
xlApp.Workbooks.Open "D:\Backup\我的文档\Book1.xls"
xlApp.Visible = True
xlApp.Run "ThisWorkBook.CreateObj"
lyserver 2011-10-13
  • 打赏
  • 举报
回复
不能直接初始化,必须在ThisworkBook写一个公共的初始方法,比如:
VBA中ThisworkBook模块里的代码
Public ObjInThisWorkBook As Object

Public Sub CreateObj()
Set ObjInThisWorkBook = CreateObject("Wscript.Shell")
End Sub

保存Excel。

VB6代码:
Sub main()
Dim xlApp As Excel.Application

Set xlApp = GetObject(, "Excel.Application")
xlApp.Run "ThisWorkBook.CreateObj"
End Sub

GetObject方法表示调用的是正在运行的的Excel实例,本示例仅在只有一个Excel实例时有效。
贝隆 2011-10-13
  • 打赏
  • 举报
回复
那就是一个Book对象了?
gooore 2011-10-13
  • 打赏
  • 举报
回复
感谢您的回复,我的主程序是VB6写的,调用Excel对象,然后Excel的Thisworkbook下声明了一格对象,

Public ObjInThisWorkBook as object


但是ObjInThisWorkBook不在Excel内实例化,我需要用VB6的主程序把它实例化。

[Quote=引用 2 楼 sysdzw 的回复:]
他不是操作具体的cell表格之类的动作,没法通过录制宏的。

“Public成员对象进行实例化”这句话没看懂,对象是对类的实例化吧,你还要将对象实例化?这是什么逻辑。
[/Quote]
无·法 2011-10-13
  • 打赏
  • 举报
回复
他不是操作具体的cell表格之类的动作,没法通过录制宏的。

“Public成员对象进行实例化”这句话没看懂,对象是对类的实例化吧,你还要将对象实例化?这是什么逻辑。
贝隆 2011-10-13
  • 打赏
  • 举报
回复
你录制宏可以得到代码啊

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧