2013-07-24 172 views
0

我使用Windows XP SP 3.我已經寫代碼從Excel 2003中多個圖表粘貼到Word 2003在Word中粘貼Excel圖表,VBA

Dim word As Object 
Dim doc As Object 
On Error Resume Next 

Set word = GetObject(, "word.application") 'gives error 429 if Word is not open 
If Err = 429 Then 
    Set word = CreateObject("word.application") 'creates a Word application 
    Err.Clear 
End If 

With word 
    .Visible = True 
    .Documents.Add 
End With 

Sheets("Data").Select 

For i = 1 To 2 
    ActiveSheet.ChartObjects(i).Activate 
    ActiveChart.ChartArea.Copy 
    With word.Selection 
     'Paste Chart 
     .Range.PasteSpecial 
    End With 
Next i 

我想明白了,我怎麼可以把Excel 2003中的圖表在不同的地方創建成word文件? E.x.我想按以下順序放置4個圖表:第一個圖表被分配到文檔的左端(不是段落),第二個圖表被分配到文檔的左側,3d位於第一個下面,同樣用於4。

謝謝你的回答!

UPD:基於有用的註釋,我爲我的問題列出了以下解決方案。創建模板文件並在其中插入一個名爲insertHere的書籤。在此文件中使用Excel VBA進行更改。

下面是該

Sub macro() 
Dim word As Object 
On Error Resume Next 

Set word = GetObject(, "word.application") 'gives error 429 if Word is not open 
If Err = 429 Then 
    Set word = CreateObject("word.application") 'creates a Word application 
    Err.Clear 
End If 

Set templateFile = word.documents.Add(Template:="C:\Users\PC\Desktop\Doc4.dot") 
Sheets("Data").Select 

ActiveSheet.ChartObjects(1).Activate 
ActiveSheet.ChartObject(1).Select 
ActiveChart.ChartArea.Copy 
With templateFile.Bookmarks 
    .Item("insertHere").Range.Paste 
End With 
End Sub 

然而代碼,此代碼不插入圖表。你能給我一個暗示爲什麼?

回答

4

最簡單的方法是在Word中定義Bookmarks以查看您希望粘貼圖表的位置。在Word 2003中,如果我記得正確,該選項位於插入菜單上的書籤。首先定位光標,插入,書籤(Ctrl-Shift-F5)給它一個名字,如bkChart1(不含空格)。然後:

word.ActiveDocument.Bookmarks("bkChart1").Range.PasteAndFormat 
' there are other Paste methods, or PasteSpecial 

如果你喜歡的文件,並粘貼的對象格式,使用代碼,那麼你會很好地記錄在Word中的幾個宏。它不會創建完美的代碼,但它會幫助您發現所需的方法和屬性。

+0

+1。書籤是要做到這一點的方法。 –

+0

你會如此友善地檢查我的更新代碼嗎? –

+0

它應該是ChartObjects(1),而不是ChartObject。然後仔細檢查模板是否還包含書籤 - 在修改模板時很容易使其消失。 –