0

我一直在反对这个问题太久了,我似乎找不到关于这个特定问题的任何帖子:

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

我已经能够使用图表来做到这一点,但不能使用嵌入式工作表。

我可以找到对象:

me.Shapes(1)

甚至从中获取替代文本:

debug.print me.Shapes(1).AlternativeText

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

谁能帮我?我会非常感激!:-)

4

2 回答 2

2

好的,我知道发生了什么。我的嵌入式工作表不断变得“未嵌入”并变为图片。我试图关闭 Excel 的 Word 实例,就像我必须编辑图表数据一样。但是当我这样做时,工作表将失去与 Excel 的连接并转换为图像。

因此,我没有退出 Excel 实例,而是简单地执行了以下操作:

k,我知道发生了什么。我的嵌入式工作表不断变得“未嵌入”并变为图片。我试图关闭 Excel 的 Word 实例,就像我必须编辑图表数据一样。但是当我这样做时,工作表将失去与 Excel 的连接并转换为图像。

因此,我没有退出 Excel 实例,而是简单地执行了以下操作:

SendKeys "{ESC}"

现在,我知道使用 SendKeys 命令是禁忌,但它确实有效!

于 2013-04-26T19:04:17.457 回答
1

以下代码应阐明您可以访问(读取和写入)Wo​​rd 文档中嵌入工作表中的任何单元格的方式:

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

编辑:附加信息/提示。建议的代码似乎不稳定,有时无法正常工作。我意识到有时需要双击文档中的工作表才能让宏走到最后。

于 2013-04-25T21:27:35.717 回答