我一直在打击这个问题太长时间了,我似乎无法在这个具体问题上找到任何帖子:
我有一个MS Word 2010文档,它有一个嵌入式Excel工作表,没有链接。我的最终目标是从MS Access修改该工作表上的数据,但是现在,我只想弄清楚如何引用该底层工作表。
我已经能够使用图表,但不能使用嵌入式工作表。
我可以找到对象:
me.Shapes(1)
甚至从中获取替代文字:
debug.print me.Shapes(1).AlternativeText
但无法弄清楚如何进入底层工作表。使用图表,我可以简单地引用me.Shapes(1).Chart.ChartData
并从那里开始,但是工作表本身没有预定义的对象。
任何人都可以帮助我吗?我会非常感激! : - )
答案 0 :(得分:2)
好的,我弄清楚发生了什么。我的嵌入式工作表不断变得“不嵌入”并变成了图片。我试图关闭Excel的Word实例,就像我编辑图表数据一样。但是当我这样做时,工作表将丢失它与Excel的连接并转换为图像。
因此,我只是执行以下操作,而不是退出Excel实例:
k,我弄清楚发生了什么。我的嵌入式工作表不断变得“不嵌入”并变成了图片。我试图关闭Excel的Word实例,就像我编辑图表数据一样。但是当我这样做时,工作表将丢失它与Excel的连接并转换为图像。
因此,我只是执行以下操作,而不是退出Excel实例:
SendKeys "{ESC}"
现在,我知道使用SendKeys命令是禁忌,但它有效!
答案 1 :(得分:1)
以下代码应阐明您在Word文档中访问(读取和写入)嵌入工作表中任何单元格的方式:
Sub Word_Embedded_Sheet()
Dim oleSH As Object
Set oleSH = ActiveDocument.Shapes(1).OLEFormat
'few lines to understand where we are...
With oleSH
Debug.Print .ClassType
Debug.Print .Object.Name
Debug.Print TypeName(.Object)
'changing cell value
.Object.sheets(1).Range("a1").Value = 125
'reading cell value
Debug.Print .Object.sheets(1).Range("a1").Value
End With
End Sub
编辑:附加信息/提示。 建议的代码似乎不稳定,偶尔也无法工作。我已经意识到,有时需要双击文档中的工作表以允许宏结束。