2013-07-24 82 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。然后仔细检查模板是否还包含书签 - 在修改模板时很容易使其消失。 –