Страницы: 1
RSS
Макрос переноса динамической таблицы Ексель в закладку открытого документа Ворд, Ошибки объявления переменных и тп
 
Код не мой, адаптирован для своих нужд, бывает запустится но толком не работает, ломаю голову часа четыре уже. Закладка "Таблица" в шаблоне документа, он заполняется с ексель данными, под конец нужно вставить таблицу из екселя, и тут хочу работаю, хочу нет ((
Код
Код
Sub ToWords()
'Перенос в закладку ворд

Dim iLastDog1 As Long


   Sheets("Dog1").Select ' активируем лист с таблицей

  With ActiveDocument
  
               Set r = ActiveDocument.Bookmarks.Item("Таблица").Range
                      n = r.Start
                If r.End - r.Start > 10 Then
                      Set Q = .Range(r.Start + 1, r.End)
                      Q.Tables(1).Delete
                End If
           
                With Sheets("Dog1") 'для листа на котором динамическая таблица для копирования

                    iLastDog1 = Cells(Rows.Count, 10).End(xlUp).Row 'вычисление номера последней строки
               
                     Range(Cells(2, 1), Cells(iLastDog1, 11)).Copy 'копируем динамическую таблицу зная столбцы
                  
               End With
      
      r.PasteAndFormat (wdFormatOriginalFormatting)
      ActiveDocument.Bookmarks.Add "Таблица", r           'вставляем в закладку ворд
          
   End With
    
End Sub
 
С какого уровня вы запускаете код, из Excel или Word ?
У вас есть и "With ActiveDocument" и "Sheets("Dog1").Select" без адресации предыдущего уровня и неизвестно с какой стороны он запускается.
 
"Sheets("Dog1").Select" все равно не работет (( Использовал другой макрос, с просторов инета, но этот вставлял таблицу как дополнение к шапке, с нужным форматированием, другой вставляет как еще одну таблицу.
Собственно другой, тот что работает :
Код
Чтобы работать с запущенной программой Word,
'надо использовать GetObject.
Set Ворд = GetObject(Class:="Word.Application")
'Подключение к активному документу Word.
Set Документ = Ворд.ActiveDocument
'Копирование диапазона ячеек из активной книги, из активного листа Excel.

          Dim iLastDog1 As Long
             iLastDog1 = Cells(Rows.Count, 10).End(xlUp).Row 'вычисление номера строки
           

        ActiveWorkbook.Sheets("Dog1").Range(Cells(2, 1), Cells(iLastDog1 - 1, 11)).Copy

   
'Вставка скопированного в закладку с именем Закладка1.

'WordFormatting:=True - шрифт текста вставленной таблицы будет в соответствии со стилем Сетка таблица, а не как в Excel.
'RTF:=True - таблица будет использовать RTF, а не HTML (этого сам не понимаю).
Документ.Bookmarks("Таблица").Range.PasteExcelTable _
    LinkedToExcel:=False, WordFormatting:=True, RTF:=False

'Снятие пунктирной линии в Excel после копирования.
Application.CutCopyMode = False

End Sub
Изменено: Дмитрий Князев - 23.04.2019 12:54:21 (Правил Теги)
Страницы: 1
Наверх