2013-07-24 3 views
0

Я использую Windows XP SP 3. Я написал код, чтобы вставить несколько диаграмм из Excel 2003 в Word 2003.Вставить диаграмму 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 в созданный файл слов в разных местах? E.x. Я хотел бы разместить 4 диаграммы в следующем порядке: 1-й график привязан к левому краю документа (а не к абзацу), 2-й график привязан к левой стороне документа, третий лежит ниже 1-го, то же самое для четвёртый.

Благодарим за ответы!

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

Самый простой способ - определить Bookmarks в Word для местоположений, в которые вы хотите вставить диаграммы. В 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. И дважды проверьте, что шаблон по-прежнему включает в себя закладку - легко его исчезнуть при изменении шаблона. –

Смежные вопросы