Тема: Таблици из разных листов книги Excel в документ Word
Добрый день, поиском пользовался, но подобного не нашел.
Суть проблемы: Есть файл Excel в котором на разных листах заполняются разные части отчета.
Допустим на первом листе "Шапка" отчета, на втором 1 таблица отчета, на третьем 2 таблица отчета.
Пытался записать макрос, которым бы "Шапка" отчета и 1 таблица отчета копировались на первый лист документа Word, а 2 таблица отчета на второй лист документа Word.
При этом желательно установить параметры абзаца документа Word и вставленные таблицы выровнять по ширине и установить выравнивание в ячейке по центру.
VBA слабовато знаю, вышло только записать макрос для копирования одной только таблицы, который также устанавливает параметры абзаца документа Word и выравнивает вставленную таблицу по ширине, выравнивает в ячейки в этой таблице по центру.
Как вставить остальное и разделить разрывом страницы таблицу 1 и 2 отчета ума не хватает.
Вот код, который состряпал:
Sub copy()
'Поставить галку - Tools\References\Microsoft Word X.X Object Library
Dim wdApp As New Word.Application 'экземпляр приложения
Dim wdDoc As Word.Document 'экземпляр документа
wdApp.Visible = True 'запускаем Microsoft Word
Set wdDoc = wdApp.Documents.Add 'новый документ Microsoft Word
wdDoc.PageSetup.Orientation = wdOrientPortrait 'ориентация страниц документа Microsoft Word
Range("A1:C5").copy 'копируем "Шапку" отчета в буфер
Call wdDoc.Range.Paste 'вставляем из буфера
'форматирование листа записанное макрорекодером
With wdDoc.Paragraphs.Format
.RightIndent = 0 'величина правого отступа абзаца в пунктах
.SpaceBefore = 0 'величина отступа после абзаца (в пунктах)
.SpaceBeforeAuto = False
.SpaceAfter = 0 'величина отступа перед абзацем (в пунктах)
.SpaceAfterAuto = False
.LineSpacingRule = wdLineSpaceSingle 'величина межстрочного интервала (одинарный)
.WidowControl = True
.KeepWithNext = False
.KeepTogether = False
.PageBreakBefore = False
.NoLineNumber = False
.Hyphenation = True
.FirstLineIndent = 0 'отступ первой строки в пунктах
.OutlineLevel = wdOutlineLevelBodyText
.CharacterUnitLeftIndent = 0
.CharacterUnitRightIndent = 0
.CharacterUnitFirstLineIndent = 0
.LineUnitBefore = 0
.LineUnitAfter = 0
.MirrorIndents = False
.TextboxTightWrap = wdTightNone
End With
' форматирование вставленной таблици записанное макрорекодером
With wdDoc.Tables(1)
.AutoFitBehavior (wdAutoFitWindow) 'автоматический подбор ячеек
.Rows.HeightRule = wdRowHeightAtLeast
.Rows.Height = CentimetersToPoints(0.4) 'высота строки
.Range.Cells.VerticalAlignment = wdCellAlignVerticalCenter 'выравнивание в ячейке
End With
Application.CutCopyMode = False 'очистить буфер обмена
wdApp.Activate 'активируем окно Microsoft Word
End Sub
Пример прилагаю, буду признателен за помощь.