Форум по VBA и MS Office

VBA, Excel => VBA, макросы в Excel => Тема начата: Mayskij от 21 января 2020, 17:50

Название: Excel VBA Макросы: Макросом скопировать только таблицу из Эксель в Ворд вставив во вторую строку, не удаляя остальной текст в документе.
Отправлено: Mayskij от 21 января 2020, 17:50
Нужно Макросом скопировать только таблицу из Эксель в Ворд, вставив во вторую строку, не удаляя остальной текст в документе.

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

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

Макрос
Sub Макрос()

    Dim ворд As Object, doc As Object
   
    Set ворд = CreateObject("Word.Application")
    ворд.Visible = True
    Set doc = ворд.Documents.Open("C:\Users\User\Desktop\Результат.docx")
    [A1:C3].Copy
    doc.Range.InsertParagraphBefore
    doc.Range.PasteExcelTable False, False, False
   
End Sub
[свернуть]
Название: Re: Excel VBA Макросы: Макросом скопировать только таблицу из Эксель в Ворд вставив во вторую строку, не удаляя остальной текст в документе.
Отправлено: Администратор от 21 января 2020, 17:55
Со строками сложно работать в ворде, т.к. они изменяются например от ширины монитора.
Поэтому удобнее обращаться не к строкам, а к абзацам.

Если вы включите режим непечатаемых символов, то в конце абзаца увидите символ в виде буквы Р, которая повёрнута в другую сторону.
В конце каждого абзаца есть этот символ.

Может быть правильнее поставить задачу: вставить не в строку 2, а вставить в абзац 2?
Название: Re: Excel VBA Макросы: Макросом скопировать только таблицу из Эксель в Ворд вставив во вторую строку, не удаляя остальной текст в документе.
Отправлено: Mayskij от 22 января 2020, 17:04
да, таблицу нужно вставить в ворд-файл во второй абзац
Название: Re: Excel VBA Макросы: Макросом скопировать только таблицу из Эксель в Ворд вставив во вторую строку, не удаляя остальной текст в документе.
Отправлено: Администратор от 22 января 2020, 17:27
В коде укажите ваше полное имя ворд-файла (в коде есть пояснение).

Макрос
Sub Макрос()

    Dim ворд As Object, doc As Object, rng As Object
   
    Set ворд = CreateObject("Word.Application")
    ворд.Visible = True
   
    ' Здесь укажите ваше полное имя ворд-файла.
    Set doc = ворд.Documents.Open("C:\Users\User\Desktop\Результат.docx")
   
    [A1:C3].Copy
   
    ' Присваиваем имя "rng" фрагменту текста, в котором находится второй абзац.
    Set rng = doc.Paragraphs(2).Range
    ' Превращаем объект "rng" в точку вставки (аналог "мигающий курсор").
    rng.Collapse Direction:=1
    ' Вставка таблицы из буфера обмена в объект "rng".
    rng.PasteExcelTable False, False, False
   
End Sub
[свернуть]
Название: Re: Excel VBA Макросы: Макросом скопировать только таблицу из Эксель в Ворд вставив во вторую строку, не удаляя остальной текст в документе.
Отправлено: Mayskij от 23 января 2020, 00:15
Всё заработало. Спасибо.