【发布时间】:2016-12-27 21:11:19
【问题描述】:
我正在寻找在 Visio 中嵌入 Excel 工作簿并对嵌入数据执行读/写操作。对 Excel 数据进行特殊粘贴似乎嵌入了整个工作簿,而不仅仅是选定/复制的数据。
我能够获得对嵌入在 Visio 页面上的 Excel 工作簿对象的引用,但我无法确定哪个工作表处于活动状态并显示在 Visio 中。似乎我只能在编辑工作表时告诉活动工作表是什么。当它就在页面上时,Workbook 对象为 ActiveSheet 返回 Nothing,并且工作簿没有 Windows。没有窗口是有道理的,但没有活动工作表就没有多大意义了。
有没有办法找出 Excel OLE 对象中的“活动”工作表是什么?或者我写的任何代码都应该假设一切都在表 1 中吗?我可能会以编程方式添加任何嵌入式工作簿,因此将每本书限制在一张纸上不会太大,但我只是想确保没有一些我忽略的属性会告诉我我想要什么.
此代码将在页面上找到一个 Excel OLE 对象,并在工作簿的工作表 1 中设置单元格 A1 和 B1:
Dim CheckShp As Visio.Shape
Dim CheckObj As OLEObject
For Each CheckObj In ActivePage.OLEObjects
If CheckObj.ProgID Like "Excel.Sheet.*" Then
Dim Sheet As Excel.Worksheet
Dim Bk As Excel.Workbook
Set Bk = CheckObj.Object
Set Sheet = Bk.Worksheets(1)
Sheet.Cells(1, 1) = "HELLO"
Sheet.Cells(1, 2) = "WORLD"
End If
Next CheckObj
【问题讨论】:
-
您能否获得对没有
Activating或Editing嵌入OLE 对象的工作簿对象的引用? -
你目前有什么代码?
-
我可以轻松获得对工作簿的引用,但我想获得对在不编辑 OLE 对象时显示的工作表的引用。没有什么明显的,我可以看到(ActiveSheet 对于工作簿对象来说是空的,除非正在编辑 OLE 对象)。