我正在四处寻找嵌入excel工作簿中的excel工作簿,并在嵌入式数据上进行读/写操作。使用Excel数据进行粘贴特殊性似乎嵌入了整个工作簿,而不仅仅是选定/复制的数据。
我能够获得对Visio页面上嵌入的Excel Workbook对象的引用,但是我无法分辨出哪个表是活动的并显示在Visio中。看来我只能说出表格编辑时的活动表是什么。当它在页面上时,工作簿对象对ActiveSheet的返回,并且工作簿没有窗口。这是有道理的,它没有窗户,但是没有那么有意义的没有活动的表。
有没有办法找出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
您不需要ActiveSheet,如果您不编辑,实际上一无所有。您可以通过bk.worksheets迭代,从1到Worksheets.count,以找到一个具有特定名称的工作。
另外,索引可以是一个名称,因此应该有效:
Set Sheet = Bk.Worksheets("MySpecificSheet")