Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2013, 14:32   #1
Erop777
Новичок
Джуниор
 
Регистрация: 06.01.2013
Сообщений: 2
По умолчанию Вставка диаграммы из Excel в Word в указанное место закладкой.

Здравствуйте, уважаемые форумчане! Только начинаю дружиться с VBA, помогите решить задачу.

Нужно определенный график из Excel вставить в документ Word в место определенное место, отмеченное закладкой. Это нужно, чтобы в дальнейшем на основании эксель таблицы формировать отчет, который содержит таблицы, графики.

Вот код макроса, вызываемого в экселе:

Sub Макрос1()

Const sWordName As String = "c:\TEMP.docx" ' строка - путь к word файлу
Dim oWord As Word.Application ' oWord - объявление приложения ворд
Dim oDocument As Word.Document ' oDocument - объявление документа ворд

Dim oRan As Range

Sheets("9. графики 1").Select ' копирование нужного графика в буфер
ActiveSheet.ChartObjects("Диаграмма 4").Activate
ActiveChart.SeriesCollection(1).Sel ect
ActiveChart.ChartArea.Copy

Set oWord = GetObject(Class:="Word.Application" )
oWord.Visible = True
Set oDocument = oWord.Documents(sWordName)
AppActivate oWord
Documents(1).Activate

' переход к закладке GR1
ActiveDocument.Range.GoTo What:=wdGoToBookmark, Name:="GR1"

oDocument.Content.Paste ' вставка графика в место закладки

End Sub

Проблема в том, что курсор не устанавливается в указанное место, а при вставлении графика из буфера все содержимое ворд документа удаляетя.

В чем ошибка?

P.S.
В дальнейшем хочу написать цикл, который будет вставлять все графики по своим местам.

С уважением, Егор.
Erop777 вне форума Ответить с цитированием
Старый 10.01.2013, 15:18   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

После перехода, который у вас в коде (ActiveDocument.Range.GoTo What:=wdGoToBookmark, Name:="GR1") будет выделен фрагмент документа, где находится закладка. И можно вот так вставить данные в закладку:
Код:
Sub Макрос1()
    
    Selection.Paste
    
End Sub
Можно без переходов вставить данные в то место, где находится закладка.
Код:
Sub Макрос2()
    
    'Bookmarks("Закладка_1") - в скобках нужно указать
    'имя закладки.
    ActiveDocument.Bookmarks("Закладка_1").Range.Paste

End Sub

Примечания

Закладки есть двух видов:
  1. созданные пользователем;
  2. созданные самой программой Word.
Закладки, сделанные пользователем можно увидеть. Закладки, сделанные программой Word, нельзя увидеть.

Чтобы увидеть закладки, сделанные пользователем, в Word 2010 нужно сделать следующее:
Файл - Параметры - Дополнительно - Показывать содержимое документа - Показывать закладки.

Закладки есть двух видов:
  1. в виде вертикальной черты;
  2. в виде двух квадратных скобок.
Закладки в виде вертикальной черты создаются, если при создании закладки текст не выделен.
Закладки в виде двух квадратных скобок создаются, если при создании закладки текст выделен.

Если вставлять данные в закладку в виде вертикальной черты, то закладка не удаляется.
Если вставлять данные в закладку в виде двух квадратных скобок, то закладка удаляется.
Скрипт вне форума Ответить с цитированием
Старый 10.01.2013, 15:24   #3
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Если вы запускаете код не в программе Word, то команды должны быть связаны с переменными, т.е. в вашем случае нужно сделать так:
Код:
Sub Макрос1()
    
    oWord.Selection.Paste
    
End Sub
Код:
Sub Макрос2()
    
    'Bookmarks("Закладка_1") - в скобках нужно указать
    'имя закладки.
    oDocument.Bookmarks("Закладка_1").Range.Paste

End Sub
Скрипт вне форума Ответить с цитированием
Старый 10.01.2013, 16:11   #4
Erop777
Новичок
Джуниор
 
Регистрация: 06.01.2013
Сообщений: 2
По умолчанию

Скрипт, спасибо огромное Вам! Все заработало! А то уже несколько дней ломал голову. Спасибо за оперативный и развернутый ответ!
Erop777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка таблицы в Word как листа Excel и форматирование его размеров Nalim06 Microsoft Office Excel 0 08.10.2012 15:08
Спец вставка Word/Excel Foxx Microsoft Office Excel 2 27.02.2012 20:27
Добавление строки или столбца в указанное место массива revaldo666 Общие вопросы C/C++ 11 28.03.2011 16:47
Переод каретки в указанное место в RE MyLastHit Общие вопросы Delphi 8 08.08.2010 20:49