在MS Word中更改嵌入式Excel工作表中的工作表数据

时间:2013-04-25 19:57:33

标签: ms-word word-vba

我一直在打击这个问题太长时间了,我似乎无法在这个具体问题上找到任何帖子:

我有一个MS Word 2010文档,它有一个嵌入式Excel工作表,没有链接。我的最终目标是从MS Access修改该工作表上的数据,但是现在,我只想弄清楚如何引用该底层工作表。

我已经能够使用图表,但不能使用嵌入式工作表。

我可以找到对象:

me.Shapes(1)

甚至从中获取替代文字:

debug.print me.Shapes(1).AlternativeText

但无法弄清楚如何进入底层工作表。使用图表,我可以简单地引用me.Shapes(1).Chart.ChartData并从那里开始,但是工作表本身没有预定义的对象。

任何人都可以帮助我吗?我会非常感激! : - )

2 个答案:

答案 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

编辑:附加信息/提示。 建议的代码似乎不稳定,偶尔也无法工作。我已经意识到,有时需要双击文档中的工作表以允许宏结束。