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

问题描述:

我一直在敲打我的头对本作的方式太长,我似乎无法找到关于这个问题的任何信息:嵌入式Excel工作表中的MS Word改变工作表数据

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

我已经可以用Chart来做,但不能嵌入工作表。

我能找到对象:

me.Shapes(1) 

,甚至从它那里得到的替代文本:

debug.print me.Shapes(1).AlternativeText 

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

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

+0

让我们说清楚,你的意思是“嵌入式工作表”,你认为工作表或工作表是数据背景(你提到的)的几个单元格? – 2013-04-25 20:35:51

+0

对不起。这是一个“少数几个单元格”,我将其视为工作表表格。 :-) – MultiGuy 2013-04-25 20:59:47

+0

我知道这是回答,但我想我会把它放在这里。我还提出了另一个问题。我从Word内部正常工作,但现在我试图让它从Access工作。我能够从Access编辑Word文档中的其他对象,但它不适用于这些嵌入式Excel工作表。我在“Set oleObj = wdDoc.Shapes(”tblEBACostHistory“)。OLEFormat”行中出现“类型不匹配”。有任何想法吗? – MultiGuy 2013-05-02 14:09:15

下面的代码应澄清可以访问的方式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 

编辑:附加信息/尖端。 建议的代码似乎不稳定,偶尔也不能工作。我已经意识到,有时需要在文档中双击工作表以允许宏到最后。

+0

感谢KaxJaw!有趣的是,我几乎完成了你在这里完成的工作。它一次起作用!然后停止,给我一个“对象变量或带块变量未设置”的错误。我没有改变任何东西。这就是我现在要处理的事情。我会继续努力的。我试图让它完全在幕后工作,所以没有用户交互来“双击”任何东西。如果它不稳定,可能需要做一些不同的事情。 无论如何,再次感谢! – MultiGuy 2013-04-26 15:24:51

好的,我想清楚发生了什么事。我的嵌入式工作表一直处于“非嵌入式”并变成了一张图片。我试图关闭Excel的Word实例,就像我在编辑图表数据时所做的一样。但是当我这样做时,工作表将失去与Excel的连接并转换为图像。

因此,而不是退出Excel的情况下,我只是做了以下内容:

K,我想通了,发生了什么事。我的嵌入式工作表一直处于“非嵌入式”并变成了一张图片。我试图关闭Excel的Word实例,就像我在编辑图表数据时所做的一样。但是当我这样做时,工作表将失去与Excel的连接并转换为图像。

因此,而不是退出Excel的情况下,我只是做了以下内容:

SendKeys "{ESC}" 

现在,我知道这是忌讳使用SendKeys命令,但它的工程!

+0

很高兴知道。 +1在这里添加你的答案... – 2013-04-26 19:41:05