Валерий Назаров
Работа с Word. Статья шестая
Работа с таблицами в Word (часть 3)
В предыдущей статье были рассмотрены способы динамического добавления строк и столбцов. Но вам может понадобиться и обратная операция, удаление. Поэтому рассмотрим данный код:
'Удаляем 3-й столбец
TableWord.Columns(3).Delete
'Удаляем 20-ю строку
TableWord.Rows(20).Delete
'Удаляем ячейку
TableWord.Cell(19, 1).Delete
Для оформления внешнего вида таблицы в Word-e часто используется заливка ячеек цветом. Мы тоже не обойдём вниманием эту возможность и добавим код в программу.
'произведём заливку ячейки с помощью константы
TableWord.Cell(8, 1).Shading.BackgroundPatternColor = wdColorGold
'произведём заливку ячейки с помощью функции RGB
TableWord.Cell(8, 2).Shading.BackgroundPatternColor = RGB(100, 200, 50)
'произведём заливку столбца
TableWord.Columns(3).Shading.BackgroundPatternColor = wdColorOrange
'произведём заливку строки
TableWord.Rows(10).Shading.BackgroundPatternColor = wdColorTan
'произведём заливку всей таблицы
'TableWord.Shading.BackgroundPatternColor = wdColorBlue
Основным действием в ходе работы с таблицами является добавление текста в ячейки. Для простого добавления текста хватает и кода TableWord.Cell(4, 2).Range.Text = "", но здесь есть некоторые нюансы. Например при использовании данного кода вы всегда будете обновлять содержимое ячейки, то есть уничтожать предыдущий текст. И самое неприятное это то что при изменении свойств текста вы изменяете свойства всего текста в ячейке. Рассмотрим на примере:
'печатаем текст в ячейку (в две строки)
TableWord.Cell(10, 1).Range.Text = "Назаров" & vbCrLf & "GGG"
'меняем цвет текста в ячейке
TableWord.Cell(10, 1).Range.Font.Color = wdColorBlue
'делаем текст размером 14 пт.
TableWord.Cell(10, 1).Range.Font.Size = 14
'переключаем на полужирный текст
TableWord.Cell(10, 1).Range.Font.Bold = wdToggle
Для того чтобы обойти эти ограничения мы воспользуемся способом, описанным в предыдущей статье.
'выбираем ячейку
TableWord.Cell(10, 2).Select
Если после этого кода мы не вставим команду "снять выделение", то текст, который был в ячейке, уничтожится и вместо него напечатается новый. Для того чтобы этого избежать, введите код:
'снимаем выделение
'DocWord.Application.Selection.EndOf
После этого вы можете добавлять и изменять текст.
Для изменения свойств текста вводите код для изменения свойств, перед тем как добавите текст. Свойства можно изменять почти так же, как описано в предыдущих статьях за исключением операторов TypeText и TypeParagraph.
'добавляем в её текст
DocWord.Application.Selection.TypeText "Первый текст"
'начинаем новую строку
DocWord.Application.Selection.TypeParagraph
'делаем её шрифт синим
DocWord.Application.Selection.Font.Color = wdColorBlue
'добавляем текст
DocWord.Application.Selection.TypeText "Вторая строка текста."
'начинаем новую строку
DocWord.Application.Selection.TypeParagraph
'делаем текст размером 14 пт.
DocWord.Application.Selection.Font.Size = 14
'меняем цвет текста
DocWord.Application.Selection.Font.Color = wdColorOrange
'переключаем на полужирный текст
DocWord.Application.Selection.Font.Bold = wdToggle
'добавляем текст
DocWord.Application.Selection.TypeText "Третья строка текста."
Одним из способов оформления таблиц является "авто формат", то есть готовые стили оформления встроенные в Word. Их в 2000 целых 43 штуки. Вы можете поэкспериментировать с ними, введя следующий код и нажимая кнопку для переключения стилей. Предупреждение - изменение стиля производите в начале работы с таблицей, иначе все ваши изменения в оформлении ячеек пропадут!
'изменяем счетчик и сбрасываем его при достижении 43
Shet = Shet + 1
If Shet = 43 Then Shet = 0
'форматировать таблицу выбраным стилем
TableWord.AutoFormat Shet
Интересной возможностью Word-a является возможность добавлять (почти) сколько угодно вложенных таблиц. Работать с ними можно также, как это было описано выше.
'выбираем ячейку
TableWord.Cell(15, 2).Select
'снимаем выделение (для нормальной работы следующего кода)
DocWord.Application.Selection.EndOf
'добавляем вложенную таблицу
Set TableWord2 = DocWord.Tables.Add(DocWord.Application.Selection.Range, 5, 3)
'печатаем текст в ячейку
TableWord2.Cell(2, 2).Range.Text = "2,2"
На этом я закончу описание работы с таблицами в Word, хотя можно продолжать ещё долго, ведь за кадром осталось ещё очень много "вкусного".
Пример: Word_6.vbp