Бывают случаи, когда какую-либо таблицу из файла Excel необходимо вставить в документ Word. Пользователь копирует в буфер обмена требуемую таблицу из программы Excel, вставляет ее из буфера обмена в требуемое место в документе Word и запускает макрос, который оформляет ее в соответствии с требованиями пользователя.
Этот способ целесообразен только в том случае, что это действие вы будете выполнять более одного раза. Например вы каждый день или чуть реже получаете выгрузку из какой-либо базы данных и требуется таблицу из выгрузки вставить в некий аналитический документ, выполненный в программе Word.
Тогда в первый раз вы копируете и вставляете таблицу в документ Word, оформляйте её (размер и цвет шрифта, заливка ячеек, отступы в ячейках, оформление границ таблицы и т.д. и т.п.). Затем эти параметры фиксируете в коде VBA и в следующие разы достаточно лишь запустить код и через секунду таблица примет нужный вид и оформление.
Давайте перейдём непосредственно к коду.
Открываем редактор VBA в программе Word и вводите следующий текст или просто скопируйте его из статьи. Следующий код форматирует таблицу из 7 стллбцов следующим образом:
- Для первой и последней строки таблицы делает двойные внешние рамки;
- В первой строке выравнивает текст по центру и делает шрифт полужирным начертанием. Цвет заливки ячеек принимает значение RGB(250, 255, 0)
- В последней строке начертание шрифта полужирное, цвет заливки ячеек принимает значение RGB(255, 255, 0)
- Ширины столбцов в сантиметрах устанавливаются следующими: 1; 6; 2; 2; 2; 2; 2
Sub ОформлениеТаблицы ()
Dim tb As Table
Set tb = Selection.Tables(1)
With tb
With .Rows(1)
.Borders.OutsideLineStyle = wdLineStyleDounle
With .Range
.Bold = True
.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Shading.BackgroundPatternColor = RGB(250, 220, 210)
End With
End With
With .Rows(tb.Rows.Count)
.Bold = True
.Shading.BackgroundPatternColor = RGB(255, 255, 0)
End With
.Columns(1).Width = CentimetersToPoint(1)
.Columns(2).Width = CentimetersToPoint(6)
.Columns(3).Width = CentimetersToPoint(2)
.Columns(4).Width = CentimetersToPoint(2)
.Columns(5).Width = CentimetersToPoint(2)
.Columns(6).Width = CentimetersToPoint(2)
.Columns(7).Width = CentimetersToPoint(2)
End With
Если статья вам понравилась ставьте лайки и подписывайтесь на канал