Макросы в excel для переноса данных в word

 

sincere658

Пользователь

Сообщений: 9
Регистрация: 06.04.2016

Всем привет. Ребята, помогите с переносом данных по каждой строке из Excel в типовую форму Word.
Задача:
есть база граждан с данными (ФИО, Дата рождения, место жительства и т.д.) например, после ввода в эту таблицу данных и ее закрытия или сохранения формировалась отдельно по каждой строке (по каждому гражданину) форма Word. Для наглядности, я приложил два файла ворд и эксель. В написании макросов не силен, перекопал много информации, но все, что находил кажется очень сложным, и переделать готовые решения под себя не в состоянии. Буду рад тем, кто откликнется

Изменено: sincere65806.04.2016 12:06:58

 

Jack_Famous

Пользователь

Сообщений: 10852
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

sincere658

Пользователь

Сообщений: 9
Регистрация: 06.04.2016

Спасибо, но там не совсем то, мне нужно чтобы данные в ворд выгружались

 

jfd

Пользователь

Сообщений: 302
Регистрация: 01.01.1970

если я не ошибаюсь, есть стандартный функционал для такого рода действий — называется слияние

 

в ворде есть функция СЛИЯНИЕ — стандартная функция, как раз для Вашего случая. Берет по строке из Екселя, вводит данные, а там где Вы метки поставите будет менять ФИО, и все что пометите.
В ВОрде — рассылки — Начать слияние. Справа дале , далее… На третьем шаге справа будет — Существующий список, там нажимаете обзор, выбираете свой екселевский файл и используйте его как базу.

 

Z

Пользователь

Сообщений: 6111
Регистрация: 21.12.2012

Win 10, MSO 2013 SP1

#7

06.04.2016 15:51:09

Цитата
sincere658 написал: мне нужно чтобы данные в ворд выгружались

Зачем?! Храните данные в XL, форму — в Ворде. Слияние — по надобности: можно для персональных писем, для электронной рассылки и пр.пр. Оно вам надо, например, хранить полторы тысячи текстовых файлов, которые один раз только фспользовались?.. ;)
ps А справочку по слиянию — внима-а-ательно почитайте.

«Ctrl+S» — достойное завершение ваших гениальных мыслей!.. ;)

 

sincere658

Пользователь

Сообщений: 9
Регистрация: 06.04.2016

#8

06.04.2016 15:59:24

Цитата
Z написал: ps А справочку по слиянию — внима-а-ательно почитайте.

Всё, ребята, разобрался. Спасибо за ответы! Можно закрывать тему. На самом деле даже неудобно, что потратил ваше время из-за такой ерунды. А я уже подумал придется лезть в изучение VBA :)

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#9

06.04.2016 18:36:42

Цитата
sincere658 написал: А я уже подумал придется лезть в изучение VBA

Не помешает )

E.v.g

1

25.08.2010, 22:37. Показов 35768. Ответов 17

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Добрый день, помогите пожалуйста довести до ума макрос , который бы экспортировал определенные данные из таблицы в виде таблицы
Excel в Word. Критерием для выбора определенной строки из всего объема таблицы служит отмеченный напротив нужной строки флажок.
Как это приблизительно должно выглядеть показано в приложенной таблице.
Вот что удалось получить:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Sub button_click()
 
End Sub
Sub Makros1()
 
Dim AppWord As Word.Application
 
Set AppWord = CreateObject("Word.Application")
AppWord.Visible = True
 
AppWord.Documents.Add
 
Range("A5:G5").Copy
AppWord.Selection.Paste
 
For i = 6 To 10
 
If Cells(i, 18) = True Then
 
 
Cells(i, 1).Copy
AppWord.Selection.Paste
 
 
End If
 
Next
 
Application.CutCopyMode = False
Set AppWord = Nothing
 
End Sub

Единственное что, сейчас копируются выделенные ячейки только первого столбца, подскажите пожалуйста как можно расширить этот диапазон и как сделать так, чтобы заголовки таблицы и данные из таблицы брались не из всего диапазона таблицы, а выборочно (например ячейкa 3 столбца A, столбца C, диапазона E:G и т.д) и выводились в Word.
Буду очень признателен за любую помощь.

Вложения

Тип файла: xls table.xls (47.0 Кб, 584 просмотров)

Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

25.08.2010, 22:37

17

Busine2009

Заблокирован

28.08.2010, 06:24

2

E.v.g,
вот так копируется строка:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Макрос1()
Dim AppWord As Word.Application
Dim i As Long
     
Set AppWord = CreateObject("Word.Application")
 
AppWord.Visible = True
AppWord.Documents.Add
 
Range("A5:G5").Copy
AppWord.Selection.Paste
 
For i = 6 To 10
    If Cells(i, 18) = True Then
        Range(Cells(i, 1), Cells(i, 16)).Copy
        AppWord.Selection.Paste
    End If
Next
 
Application.CutCopyMode = False
Set AppWord = Nothing
 
End Sub



1



E.v.g

28.08.2010, 12:26

3

Добрый день Busine2009, спасибо за ответ. В таком случае он копирует строку подряд,
подскажите пожалуйста как копировать строку выборочно, например области A6:B6, E6:G6, I6:L6 и так далее при тех же условиях.

Tinoo

-1 / 0 / 0

Регистрация: 09.03.2011

Сообщений: 75

20.06.2011, 15:05

4

Вот код, который увеличивает диапазон, по другому вопросу ответа не знаю.

Visual Basic
1
2
3
4
5
6
7
8
Sub main()
    Set wa = CreateObject("Word.Application")
    wa.Visible = True: Set wd = wa.Documents.Add
    wd.PageSetup.Orientation = 1
    [a1:l43].Copy
    wd.Range.PasteExcelTable False, False, False
    Application.CutCopyMode = False
End Sub



0



Makarona

1 / 1 / 0

Регистрация: 27.07.2011

Сообщений: 37

26.08.2011, 16:35

5

Добрый день!
бьюсь над переносом данных из Excel в Word.
Задача: по вордовским закладкам засунуть в документ определённые таблицы.

на разных сайтах нашла варианты решений, понравился один, подогнала под себя а выдаёт ошибку. Вот кусок. Подсткажите, плиз, чтож я делаю неправильно

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 Dim strDoc As String
    
     
    Dim wdApp As Word.Application, wdDoc As Word.Document, objDoc As Word.Document
    Dim xlRange As Excel.Range
    Dim exlR As Excel.Range
        
    Set wdApp = New Word.Application
    FilePath = ActiveWorkbook.Path
    Filename = "C:Documents and SettingsUserDesktopАвтоматизация.docx"
    
       Set objDoc = wdApp.Documents.Add(Template:=FilePath & "" & Filename)
     
     If objDoc Is Nothing Then
        MsgBox "Unable to find the Word file.", vbCritical, "File Not Found"
        wdApp.Quit
        Set appWrd = Nothing
        Exit Sub
    End If
  
 
 
  Set exlR = Лист6.Range("A2:B13")
 
 
     With objDoc.Bookmarks
        .Item("Первая_таблица").Range.InsertAfter exlR
     End With
 
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.DisplayAlerts = True
    Application.StatusBar = False
 
    wdApp.Visible = True
    wdApp.ActiveDocument.SaveAs FilePath & "" & " Проба.docx"
     'Clean up
    Set wdApp = Nothing
    Set objDoc = Nothing
     
End Sub

Ругается на .Item(«Первая_таблица»).Range.InsertAfter exlR пишет Type MisMatch

Заранее спасибо за помощь. Надеюсь подскажете, а то ручками вставлять и связывать таблиц 35 в каждый документ регулярно…. ну очень нудно и долго



0



Busine2009

Заблокирован

26.08.2011, 17:47

6

Makarona,
скопируйте нужный диапазон ячеек в Excel, а затем вставьте в документ Word.



0



Makarona

1 / 1 / 0

Регистрация: 27.07.2011

Сообщений: 37

26.08.2011, 17:56

7

Busine2009,
Вы имеете ввиду следующее:

Visual Basic
1
2
3
4
5
6
exlR.Select
Selection.Copy
 
     With objDoc.Bookmarks
        .Item("Первая_таблица").Range.InsertAfter Selection
     End With

Я нечто подобное пробовала, но он опять выдаёт ту же ошибку на той же строке.
Или я неправильно Вас поняла?



0



Busine2009

Заблокирован

26.08.2011, 17:59

8

Здесь после Range поставьте точку и выберите что-нибудь связанное с Paste:

Цитата
Сообщение от Makarona
Посмотреть сообщение

.Item(«Первая_таблица»).Range.InsertAfter Selection

Здесь сразу можно копировать (выделять не надо перед копированием):

Цитата
Сообщение от Makarona
Посмотреть сообщение

exlR.Select

Чтобы вставить после закладки, то нужно по-другому написать. Если надо, то напишу.



0



1 / 1 / 0

Регистрация: 27.07.2011

Сообщений: 37

26.08.2011, 18:02

9

Busine2009,
подобное тоже пробовала…
говорит, что такой метод ему не знаком.
видимо, не всё с past перебрала…
но спасибо. Если Вы советуете тоже, что делала, значит капаю в нужном направлении…



0



Busine2009

Заблокирован

26.08.2011, 18:04

10

Код, на котором я тестировал:

Visual Basic
1
2
3
4
5
6
7
8
Sub Процедура1()
Dim Ворд As New Word.Application, Документ As Word.Document
Ворд.Visible = True
Set Документ = Ворд.Documents.Add
Документ.Bookmarks.Add Name:="Bookmark1", Range:=Документ.Range(0, 0)
Range("A1:B6").Copy
Документ.Bookmarks.Item("Bookmark1").Range.Paste
End Sub



1



1 / 1 / 0

Регистрация: 27.07.2011

Сообщений: 37

29.08.2011, 09:57

11

Busine2009,
спасибо!
теперь буду дописывать Ваш код под себя, чтоб таблицы были связаны, документ сам открывался.
зато Благодаря Вам у меня таблица вставляется, а не текст.

Добавлено через 14 минут
Хм, забавная вещь получается: кодом вставляется таблица, но она сама меняет место закладки.
т.е. получилось, что таблица попала в начало документа и говорит, что именно здесь была закладка 1
Хитрая, зараза))

Убрала строку
Документ.Bookmarks.Add Name:=»Bookmark1″, Range:=Документ.Range(0, 0)

и всё стало ок)



0



Busine2009

Заблокирован

29.08.2011, 10:07

12

Цитата
Сообщение от Makarona
Посмотреть сообщение

Документ.Bookmarks.Add Name:=»Bookmark1″, Range:=Документ.Range(0, 0)

это ж вставка закладки в документ, а у вас уже все закладки вставлены.



0



1 / 1 / 0

Регистрация: 27.07.2011

Сообщений: 37

29.08.2011, 11:22

13

Busine2009, да, сначала вставила всё тупо, потом код прочитала. С утра туго соображаю…
Теперь код пишется как по маслу. Спасибо ещё раз за шаблон, очень помогло.

Добавлено через 1 час 11 минут
Очередной вопрос.
Как вставить эти таблицы связанными?
что-то никак сообразить не могу((
балда какая-то я сегодня…



0



Busine2009

Заблокирован

29.08.2011, 11:42

14

Цитата
Сообщение от Makarona
Посмотреть сообщение

Как вставить эти таблицы связанными?

есть 2 варианта связанных таблиц:

  1. в виде рисунка;
  2. в виде таблицы.

Если вставить в виде рисунка, то таблица не будет переходить на следующую страницу, если она больше страницы.



0



1 / 1 / 0

Регистрация: 27.07.2011

Сообщений: 37

29.08.2011, 11:47

15

Busine2009,
мне всё в виде таблиц надо.



0



Busine2009

Заблокирован

29.08.2011, 12:31

16

Лучший ответ Сообщение было отмечено как решение

Решение

Код:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Макрос1()
Dim Ворд As Word.Application
Dim Документ As Word.Document
'Чтобы работать с запущенной программой Word,
'надо использовать GetObject.
Set Ворд = GetObject(Class:="Word.Application")
'Подключение к активному документу Word.
Set Документ = Ворд.ActiveDocument
'Копирование диапазона ячеек из активной книги, из активного листа Excel.
ActiveWorkbook.ActiveSheet.Range("A1:E5").Copy
'Вставка скопированного в закладку с именем Закладка1.
'LinkedToExcel:=True - при обновлении данных в Excel, данные будут обновлены в Word.
'WordFormatting:=True - шрифт текста вставленной таблицы будет в соответствии со
'стилем Сетка таблица, а не как в Excel.
'RTF:=True - таблица будет использовать RTF, а не HTML (этого сам не понимаю).
Документ.Bookmarks("Закладка1").Range.PasteExcelTable _
    LinkedToExcel:=True, WordFormatting:=True, RTF:=True
'Снятие пунктирной линии в Excel после копирования.
Application.CutCopyMode = False
End Sub

Если не знаете, что написать в коде, то используйте макрорекордер:

В вашем случае надо было записать макрос в Word:

  1. скопируйте ячейки в Excel;
  2. перейдите в Word;
  3. включите макрорекордер;
  4. ПравкаСпециальная вставка…СвязатьТекст в формате RTFOK;
  5. отключите макрорекордер;
  6. перейдите в VBA;
  7. поставьте курсор на слово PasteExcelTable и нажмите клавишу F1;
  8. появится справка (правда на английском языке), по которой можно подкорректировать код.



3



1 / 1 / 0

Регистрация: 27.07.2011

Сообщений: 37

29.08.2011, 14:11

17

Вау!
немного переделала на то, чтоб открывался закрытый документ Word и формат Excel использовался. Всё, что нужно. Огромное спасибо за комментарии и описание. с Вами VBA выучу скоро.

а то программиста нашего не допросишься помочь. Легче самой написать…

Добавлено через 1 час 5 минут
Поняла смысл вот этой строки

Цитата
Сообщение от Busine2009
Посмотреть сообщение

‘RTF:=True — таблица будет использовать RTF, а не HTML (этого сам не понимаю).

Если поставить False, то остаётся форматирование Excel (если ячейки объединены, например), а если True, то все объединения ячеек сбиваются и таблица плывёт (особенно заголовки)



0



Makarona

1 / 1 / 0

Регистрация: 27.07.2011

Сообщений: 37

08.11.2011, 14:10

18

С таблицами более-менее понятно, а вот что делать с вставкой диаграмм так же из Excel в Word по закладкам? бъюсь над этим, но не могу поянть свою ошибку. Диаграмма вставляется, но в левыё верхний угол, а не по закладке. кусочек кода:

Visual Basic
1
2
3
4
5
6
7
8
Ëèñò1.ChartObjects("Ä_Ïðîäàæè1").Activate
           'активирую нужную диаграмму
  ActiveChart.ChartArea.Copy
           'копирую диаграмму
  Äîêóìåíò.Bookmarks.Item("Ä_Ïðîäàæè1").Select
           'выбираю нужную закладку в документе
  Âîðä.Selection.PasteSpecial Placement:=wdInLine
           'а тут вставляется диаграмма, но не на место закладки, а в начало документа

пробовала так:

Visual Basic
1
Âîðä.Selection.PasteAndFormat Placement:=wdInLine

не получилось

Помогите, плиз, скажите, в каком месте я — балда что-то не правильно пишу

Добавлено через 2 часа 43 минуты
Вроде немного разобралась
пока нашла такое решение, но если кто-нибудь оптимизирует или подправит меня, буду благодарна.

Visual Basic
1
2
3
4
Ëèñò1.ChartObjects("Ä_Ïðîäàæè1").Activate
    ActiveChart.ChartArea.Copy
  Äîêóìåíò.Bookmarks.Item("Ä_Ïðîäàæè1").Select
Âîðä.Selection.PasteSpecial Link:=True, DataType:=wdPasteOLEObject, Placement:=wdInLine



0



Skip to content

Как из Word перевести в Excel

На чтение 4 мин. Просмотров 7k.

Что делает макрос: Если вы обнаружите, что вы постоянно копируете данные и вставляете в Microsoft Word, вы можете использовать макрос, чтобы автоматизировать эту задачу.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

Как макрос работает

Перед тем как использовать макрос, очень важно к этому подготовиться. Чтобы подготовиться к процессу, вы должны иметь созданный шаблон Word . В этом документе, указать закладку, где вы хотите, чтобы ваши данные из Excel разместились.
Чтобы создать закладку в документе Word, поместите курсор в нужное место, выберите вкладку Вставка — Закладка. Это активизирует диалоговое окно Закладка, где вы назначаете имя
для закладки. После того, как назначено имя, нажмите кнопку Добавить.

Один из файлов образцов для этой части является документ под названием PasteTable.docx. Это документ представляет собой простой шаблон, который содержит одну закладку под названием DataTableHere. В этом примере кода вы скопируете диапазон к этому
шаблону PasteTable.docx, используя закладку DataTableHere, чтобы указать, где вставить скопированный диапазон.
Кроме того, необходимо установить ссылку на библиотеку объектов Microsoft Word.

Код макроса

Sub OtpravitDannieIzExcelVWord()
'Шаг 1: Объявляем переменные
Dim MyRange As Excel.Range
Dim wd As Word.Application
Dim wdDoc As Word.Document
Dim WdRange As Word.Range

'Шаг 2: Скопируйте определенный диапазон
Sheets("таблица доходов").Range("B4:F10").Copy

'Шаг 3: Откройте целевой документ Word
Set wd = New Word.Application
Set wdDoc = wd.Documents.Open _
(ThisWorkbook.Path & "" & "PasteTable.docx")
wd.Visible = True

'Шаг 4: Установить фокус на целевую закладку
Set WdRange = wdDoc.Bookmarks("DataTableHere").Range

'Шаг 5: Удалить старую таблицу и вставить новую
On Error Resume Next
WdRange.Tables(1).Delete
WdRange.Paste 'вставить в таблицу

'Шаг 6: Отрегулируйте ширину столбца
WdRange.Tables(1).Columns.SetWidth _
(MyRange.Width / MyRange.Columns.Count), wdAdjustSameWidth

'Шаг 7: Вставьте закладку
wdDoc.Bookmarks.Add "DataTableHere", WdRange

'Шаг 8: Очистка памяти
Set wd = Nothing
Set wdDoc = Nothing
Set WdRange = Nothing

End Sub

Как этот код работает

  1. Шаг 1 объявляет четыре переменные: MyRange содержит целевой диапазон Excel; WD является переменной, которая предоставляет объект Application Word; wdDoc является переменной объекта, которая выставляет объект Word Document; wdRange является переменной объекта, которая выставляет объект Range Word.
  2. Шаг 2 копирует диапазон таблицы рабочего листа. В этом примере, диапазон жёсткий, но мы всегда можем сделать этот выбор в нечто более переменное.
  3. Шаг 3 открывает существующий целевой документ Word, который служит в качестве шаблона. Обратите внимание, что мы устанавливаем свойство Visible приложения Word, в True.
    Это гарантирует, что мы можем увидеть действие в Word, как работает код.
  4. Шаг 4 использует объект Range в Word, чтобы установить фокус на целевой закладке. Это по существу выбирает закладку в виде диапазона, что позволяет принимать меры в этом диапазоне.
  5. Шаг 5 удаляет любую таблицу, которая может существовать внутри закладки, а затем вставляет скопированный диапазон Excel. Если мы не будем удалять любые существующие таблицы, скопированный диапазон добавится к существующим данным.
  6. Когда вы копируете диапазон Excel в документ Word, ширина столбцов не всегда соответствуют содержанию в клетках. Шаг 6 устраняет эту проблему путем регулировки ширины столбцов. Здесь, ширина каждого столбца установлена как число, которое равно общей ширине таблицы, разделенной на число столбцов в таблице.
  7. Когда мы копируем диапазон Excel для целевой закладки, мы, по существу, перезаписываем закладку. Шаг 7 воссоздает закладку, чтобы гарантировать, что в следующий раз, когда вы запустите этот код, закладка будет.
  8. Очистка памяти

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.

  • Документы Word
  • Создание файлов
  • Работа с файлами

Таблица Excel с исходными данными для создания документов Word

Макрос предназначен для программного создания документов Word на основе шаблона

(без использования функции слияния в Word)

В прикреплённом к статье архиве находятся 2 файла:

  • шаблон договора в формате Microsoft Word (расширение .dot)
  • файл Excel с макросом

Настройки макроса задаются в коде:

Const ИмяФайлаШаблона = «шаблон.dot»
Const КоличествоОбрабатываемыхСтолбцов = 8
Const РасширениеСоздаваемыхФайлов = «.doc»

При нажатии кнопки запуска макрос на основе шаблона dot создаёт очередной файл, и в этом документе производит замену текста («кода поля») из первой строки файла Excel на значение поля (из очередной строки с данными файла Excel)

Папка для сформированных документов создаётся автоматически, и содержит в имени текущую дату и время
(например, созданная папка будет называться Договоры, сформированные 01-05-2011 в 15-03-24)

Имена создаваемых файлов формируются объединением полей фамилия, имя и отчество, с добавлением расширения doc

PS: Макрос был написан достаточно давно, когда я только начинал изучать VBA, — так что код недостаточно универсален.

Но, в качестве примера, пожалуй, подойдёт (если вам нужен более функциональный макрос, воспользуйтесь универсальной надстройкой (см. ниже))

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

В надстройке — много возможностей, и полезных дополнений: склонение ФИО в родительный и дательный падежи, автоматический вывод на печать (с заданным количеством копий), размещение созданных файлов в разных папках, создание и рассылка писем со вложениями, и множество других полезных функций.

По вышеприведённой ссылке программа заполнения документов Word из Excel доступна для бесплатного скачивания.

Внимание: просьбы о доработке макроса, описанного в этой статье, не принимаются.

Есть новая (универсальная) версия, — в которой уже есть практически всё, что может понадобиться.

  • 197090 просмотров

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.

Вставка таблицы Excel в документ Word с помощью кода VBA Excel. Метод Selection.PasteExcelTable: синтаксис, параметры, пример использования.

Работа с Word из кода VBA Excel
Часть 6. Вставка таблицы Excel в документ Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]

Метод Selection.PasteExcelTable

Метод Range.Paste, использующийся в VBA Word для вставки в документ таблиц, скопированных в буфер обмена из другого документа Word, не применим для вставки в документ таблиц, скопированных из книги Excel. Для этих целей используется метод Selection.PasteExcelTable.

Selection.PasteExcelTable — это метод, предназначенный для вставки Excel-таблицы из буфера обмена в документ Word и ее форматирования в соответствии с заданными параметрами.

Синтаксис

Expression.PasteExcelTable(LinkedToExcel, WordFormatting, RTF)

Expression — переменная, представляющая объект Selection. В том числе, это может быть курсор или закладка.

Параметры

Все параметры метода Selection.PasteExcelTable логического типа и являются обязательными.

Параметр Описание
LinkedToExcel True — вставленная таблица связывается с исходным файлом Excel, чтобы изменения, внесенные в файл Excel, отображались в Microsoft Word.
False — связь между вставленной таблицей и таблицей в исходном файле не устанавливается.
WordFormatting True — вставленная таблица будет отформатирована как таблица документа Word.
False — вставленная таблица будет отформатирована в соответствии с исходным файлом Excel.
RTF True — Excel-таблица будет вставлена в расширенном текстовом формате (RTF).
False — Excel-таблица будет вставлена в формате HTML-таблицы.

Допустим, у нас есть таблица Excel, начинающаяся с ячейки A1 (или с любой другой), и нам необходимо скопировать эту таблицу в существующий документ Word, вставив ее на место закладки «Закладка1».

Решение:

Sub Primer()

Dim myWord As New Word.Application, myDoc As Word.Document

‘Открываем существующий документ Word

Set myDoc = myWord.Documents.Open(«C:ТестоваяДокумент1.docx»)

‘Копируем таблицу на активном листе в буфер обмена

‘Вместо ячейки Range(«A1») можно указать любую другую, расположенную внутри таблицы

Range(«A1»).CurrentRegion.Copy

‘Вставляем таблицу из буфера обмена на место закладки

myDoc.Bookmarks(«Закладка1»).Range.PasteExcelTable False, False, False

‘Отображаем программу Word

myWord.Visible = True

‘Очищаем переменные

Set myWord = Nothing

Set myDoc = Nothing

End Sub

Если необходимо таблицу вставить в конец документа, строку

myDoc.Bookmarks(«Закладка1»).Range.PasteExcelTable False, False, False

следует заменить на

With myDoc

    ‘Переводим курсор в конец документа

    .Range(.Range.Characters.Count 1, .Range.Characters.Count 1).Select

    ‘Добавляем перенос строки, если необходимо

    .ActiveWindow.Selection.InsertAfter vbCr

    ‘Переводим курсор в конец документа

    .Range(.Range.Characters.Count 1, .Range.Characters.Count 1).Select

    ‘Вставляем таблицу из буфера обмена

    .ActiveWindow.Selection.PasteExcelTable False, False, False

End With


Понравилась статья? Поделить с друзьями:
  • Макросы в excel 2019 для чайников с примерами
  • Макросы в excel для копирования листа
  • Макросы в excel 2013 что это
  • Макросы в excel для заполнения ячеек
  • Макросы в excel 2010 что такое