2013-04-25 57 views
0

我一直在敲打我的頭對本作的方式太長,我似乎無法找到關於這個問題的任何信息:嵌入式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

回答

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 

編輯:附加信息/尖端。 建議的代碼似乎不穩定,偶爾也不能工作。我已經意識到,有時需要在文檔中雙擊工作表以允許宏到最後。

+0

感謝KaxJaw!有趣的是,我幾乎完成了你在這裏完成的工作。它一次起作用!然後停止,給我一個「對象變量或帶塊變量未設置」的錯誤。我沒有改變任何東西。這就是我現在要處理的事情。我會繼續努力的。我試圖讓它完全在幕後工作,所以沒有用戶交互來「雙擊」任何東西。如果它不穩定,可能需要做一些不同的事情。 無論如何,再次感謝! – MultiGuy 2013-04-26 15:24:51

2

好的,我想清楚發生了什麼事。我的嵌入式工作表一直處於「非嵌入式」並變成了一張圖片。我試圖關閉Excel的Word實例,就像我在編輯圖表數據時所做的一樣。但是當我這樣做時,工作表將失去與Excel的連接並轉換爲圖像。

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

K,我想通了,發生了什麼事。我的嵌入式工作表一直處於「非嵌入式」並變成了一張圖片。我試圖關閉Excel的Word實例,就像我在編輯圖表數據時所做的一樣。但是當我這樣做時,工作表將失去與Excel的連接並轉換爲圖像。

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

SendKeys "{ESC}" 

現在,我知道這是忌諱使用SendKeys命令,但它的工程!

+0

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