Vba word выделить страницу
Таблицы в VBA Word принадлежат коллекции Tables, которая предусмотрена для объектов Document, Selection и Range. Новая таблица создается с помощью метода Tables.Add.
Синтаксис метода Tables.Add
Expression . Add ( Range , Rows , Columns , DefaultTableBehavior , AutoFitBehavior )Expression – выражение, возвращающее коллекцию Tables.
Параметры метода Tables.Add
- Range – диапазон, в котором будет создана таблица (обязательный параметр).
- Rows – количество строк в создаваемой таблице (обязательный параметр).
- Columns – количество столбцов в создаваемой таблице (обязательный параметр).
- DefaultTableBehavior – включает и отключает автоподбор ширины ячеек в соответствии с их содержимым (необязательный параметр).
- AutoFitBehavior – определяет правила автоподбора размера таблицы в документе Word (необязательный параметр).
Создание таблицы в документе
Создание таблицы из 3 строк и 4 столбцов в документе myDocument без содержимого и присвоение ссылки на нее переменной myTable:
Set myTable = . Tables . Add ( . Range ( Start : = 0 , End : = 0 ) , 3 , 4 )Создание таблицы из 5 строк и 4 столбцов в документе Word с содержимым:
Set myTable = . Tables . Add ( . Range ( Start : = myInt , End : = myInt ) , 5 , 4 )Для указания точки вставки таблицы присваиваем числовой переменной количество символов в документе минус один. Вычитаем единицу, чтобы исключить из подсчета последний знак завершения абзаца (¶), так как точка вставки не может располагаться за ним.
Последний знак завершения абзаца всегда присутствует в документе Word, в том числе и в новом без содержимого, поэтому такой код подойдет и для пустого документа.
При создании, каждой новой таблице в документе присваивается индекс, по которому к ней можно обращаться:
Нумерация индексов начинается с единицы.
Отображение границ таблицы
Новая таблица в документе Word из кода VBA Excel создается без границ. Отобразить их можно несколькими способами:
Вариант 1
Присвоение таблице стиля, отображающего все границы:
Вариант 2
Отображение внешних и внутренних границ в таблице:
Вариант 3
Отображение всех границ в таблице по отдельности:
Присвоение таблицам стилей
Вариант 1
Чтобы узнать название нужного стиля, в списке стилей конструктора таблиц наведите на него указатель мыши. Название отобразится в подсказке. Кроме того, можно записать макрос с присвоением таблице стиля и взять название из него.
Вариант 2
Выбирайте нужную константу с помощью листа подсказок свойств и методов – Auto List Members.
Обращение к ячейкам таблицы
Обращение к ячейкам второй таблицы myTable2 в документе myDocument по индексам строк и столбцов:
Обращение к ячейкам таблицы myTable в документе Word с помощью свойства Cell объектов Row и Column и запись в них текста:
В таблице myTable должно быть как минимум 2 строки и 3 столбца.
Примеры создания таблиц Word
Пример 1
Создание таблицы в новом документе Word со сплошными наружными границами и пунктирными внутри:
В выражении myDocument.Range(Start:=0, End:=0) ключевые слова Start и End можно не указывать – myDocument.Range(0, 0) .
Пример 2
Создание таблицы под ранее вставленным заголовком, заполнение ячеек таблицы и применение автосуммы:
Метод AutoSum суммирует значения в ячейках одного столбца над ячейкой с суммой. При использовании его для сложения значений ячеек в одной строке, результат может быть непредсказуемым.
Чтобы просуммировать значения в строке слева от ячейки с суммой, используйте метод Formula объекта Cell:
Другие значения метода Formula, применяемые для суммирования значений ячеек:
- «=SUM(ABOVE)» – сумма значений над ячейкой (аналог метода AutoSum);
- «=SUM(BELOW)» – сумма значений под ячейкой;
- «=SUM(RIGHT)» – сумма значений справа от ячейки.
8 комментариев для “VBA Excel. Создание таблиц в документе Word”
Здравствуйте, Юрий!
Попробуйте так:
Для начала давайте вспомним, что выделение фрагмента текста осуществляется следующим образом: в большинстве случаев нужно выбрать несколько фрагментов, для этого сначала выбираем один нужный фрагмент, далее удерживаем клавишу " Ctrl " и выбираем остальные фрагменты. Теперь перейдем к теме публикации…
Методы Insert… – выделение фрагментов текста в Word
Примеры будут как для редактора VBA, так и для сценариев Windows Script Host, и так, начнем…
Методы с префиксом Insert. позволяют вставить текст в документ:
InsertAfter (text) и InsertBefore (text) – Вставка текста (text) в конец или в начало выделения. При отсутствии выделения вставка производится там, где находится курсор. Сам материал остается выделенным.
InsertBreak (type) - Вставляет страницу, колонку или секцию. Параметр type содержит значение константы WdBreakType:
- wdTextWrappingBreak - 11 - Конец текущей строки и продолжение вставки ниже изображения, таблицы или другого объекта. Материал продолжается на следующей пустой строке, которая не содержит таблицу, совмещенную с левой или правой границей.
- wdLineBreakClearRight - 10 - Перевод на новую строку.
- wdLineBreakClearLeft - 9 - Перевод на новую строку.
- wdColumnBreak - 8 - Разрыв колонки.
- wdPageBreak - 7 - Вставка новой страницы.
- wdLineBreak - 6 - Перевод на новую строку.
- wdSectionBreakOddPage - 5 - Начало нового раздела со следующей нечетной страницы.
- wdSectionBreakEvenPage - 4 - Начало нового раздела со следующей четной страницы.
- wdSectionBreakContinuous - 3 - Новый раздел без разрыва страницы.
- wdSectionBreakNextPage - 2 - Начало нового раздела со следующей страницы.
Прежде чем приступать к программированию, стоит сделать некоторое пояснение. По сути, ряд действий будут всегда одинаковыми – создание нового документа (за это будет отвечать функция или процедура Create_Doc). Изменяться будут только вызываемые методы.
Программный код на VBScript :
Давайте посмотрим, что данный пример делает. При вызове процедуры Insert_After_Before происходит добавление в документ текстовой строки, далее в конец добавляется фраза " . Конец", а в начало - "Начало. ". Потом происходит перевод курсора в конец и добавление перевода строки.
Пример на JScript :
Для VBA мы просто запускаем редактор кода, добавляем новый модуль и прописываем код, в моем случае имя модуля - Module1:
И так, с одной теоретической частью мы закончили и написали программный код, теперь можно приступить к следующей части.
Методы Insert… – выделение фрагментов текста в Word
InsertCaption (Label, Title, TitleAutoText, Position, ExcludeLabel) - Вставляет заголовок сразу после или перед указанным выбором. Обязательным является только параметр Label.
Label – Нумерационный заголовок. Параметр может быть строкой или значением константы WdCaptionLabelID:
- wdCaptionEquation - Уравнение
- wdCaptionFigure - Рисунок
- wdCaptionTable – Таблица
Если метка (Label) не определена, то возникнет ошибка. Для определения метки надо использовать метод Add коллекции CaptionLabels , например:
Title – Заголовок, который будет отображаться справа от метки.
TitleAutoText – Авто-заголовок, перекрывает параметр Title.
Position - Указывает, будет ли вставлен заголовок выше или ниже. Может быть одной из констант WdCaptionPosition:
- wdCaptionPositionAbove - 0 - Метка название добавляется выше.
- wdCaptionPositionBelow - 1 - Метка название добавляется ниже.
ExcludeLabel - TRUE - отключить метку, заданную в параметре Label. FALSE - включить метку. Дополнительно.
Ниже я приведу примеры, что бы не дублировать программный код, я привел только содержимое процедуры Sub Insert_Caption.
Тут используется цикл for для вставки нескольких фрагментов - "Урок 6 по VBScript: Циклы for…next и for each…next".
Тут тоже используется цикл for, но уже для JS кода - "Урок 9 по JScript - оператор цикла for".
Обратите внимание, что имена переменных в примерах отличаются, это пришлось сделать с технических причин – в глазах поисковых систем статья становится заспамленой. Хорошо, давайте двигаться дальше.
Методы Insert… – выделение фрагментов текста в Word
InsertDateTime (DateTimeFormat) – Метод позволяет вставить дату или время в документ, или одновременно оба значения. Помимо параметра DateTimeFormat есть еще четыре, но они практически не используются.
DateTimeFormat – Необязательный параметр, позволяет указать формат даты и времени.
Обратите внимание на оператор with, он позволяет не писать каждый раз имя класса.
Тут логика работы аналогична.
Хорошо, осталось рассмотреть последнюю третью часть статьи.
Методы Insert… – выделение фрагментов текста в Word
InsertFile (FileName) – Позволяет вставить содержимое указанного файла в документ, параметр FileName хранит имя или путь к файлу, если путь отсутствует, то будет подразумеваться текущий каталог.
InsertNewPage - Вставляет новую страницу в место, где находится указатель.
InsertParagraph - Заменяет выделение знаком абзаца.
InsertParagraphAfter - Вставляет знак абзаца после выделения .
InsertParagraphBefore - Вставляет новый абзац перед выделением.
Методы с префиксом Move. также встречаются едва ли не в любой программе, связанной с вводом текста в Word. Самые важные и удобные из этих методов:
MoveLeft (), MoveRight (), MoveUp (), MoveDown () – Методы дают возможность переместить курсор влево, вправо, вверх и вниз. Все четыре метода принимают следующие параметры (Unit, Count, Extend), являющиеся необязательными:
Unit - Блок, по которым выбор должен быть перемещен. Параметр Unit содержит значения константы wdUnits.
Count – Единица перемещения. Значение по умолчанию 1.
Extend - Может быть либо wdMove (по умолчанию) или wdExtend.
MoveEnd (), MoveStart () – Перемещение курсора в конец или начало выделения, параметры - Unit, Count.
MoveStartUntil (), MoveStartWhile (), MoveEndUntil (), MoveEndWhile () – Позволяют переместить курсор к заданному символу или последовательности символов. Параметры Cset (обязательный) и Count (дополнительный):
Cset - Один или несколько символов. Аргумент является чувствительным к регистру.
Count – Задает целое или отрицательное значение, на которое происходит перемещение курсора.
Move (Unit, Count) – Фактически, тут мы может указать направление (Count) и текстовую единицу (Unit).
Логика работы для следующих примеров остается та же – меняется только код вызываемой процедуры. Фактически, код для языка VBScript и VBA является идентичным.
Видим, что в данном коде мы использовали несколько операторов for.
Обратите внимание на приведенные в самом начале статьи примеры кода для языков VBA и VBScript, в макросе мы можем использовать именованные константы объекта Word, но в теле Windows Script Host сценария нет, так как там они не доступны. Описание свойств класса Selection я рассмотрел в этой статье.
Спасибо за внимание. Автор блога Владимир Баталий
Методы класса Word.Selection – выделение текста в Word
Я приведу по два примера программного кода на языках JScript, VBScript и VBA. Хотя по сути, код под макрос (VBA) и сценарий VBScript особо не отличается. Для тех, кто забыл: для создания макроса в документе Microsoft Office нужно вызвать редактор Visual Basic for Application (комбинация клавиш Alt + F11), далее, добавить в проект новый модуль (макрос).
Методы с префиксом Clear… позволяют очистить выделенный материал от форматирования (абзацы, стили, символы и так далее):
ClearCharacterAllFormatting () - Все форматирование.
ClearCharacterDirectFormatting () - Форматирование знаков.
ClearCharacterStyle () - Форматирование знаков, применяемых через стили.
ClearFormatting () – Все форматирования (параграфы, стили и так далее).
ClearParagraphAllFormatting () - Форматирование абзаца.
ClearParagraphDirectFormatting () - Форматирование абзацев, применяемых вручную.
ClearParagraphStyle () - Форматирование абзацев, применяемых через стили.
Collapse (Direction) – Позволяет убрать выделение текста Word и переместить указатель в начало или конец. VBA Selection. Если параметры отсутствуют, то просто убирается выделение. Параметр Direction содержит значение константы WdCollapseDirection :
- wdCollapseEnd - 0 – Указатель вконец
- wdCollapseStart - 1 – Указатель вначале
ConvertToTable (Separator, NumRows, NumColumns, InitialColumnWidth, Format, ApplyBorders, ApplyShading, ApplyFont, ApplyColor, ApplyHeadingRows, ApplyLastRow, ApplyFirstColumn, ApplyLastColumn, AutoFit, AutoFitBehavior, DefaultTableBehavior) – Довольно мощный метод, который позволяет преобразовать выделенный Word текст в таблицу.
Separator - Символ-разделитель, может быть знаком или значением константы WdTableFieldSeparator:
- wdSeparateByParagraphs - 0 - абзаца.
- wdSeparateByTabs - 1 - табуляции.
- wdSeparateByCommas - 2 - запятая.
- wdSeparateByDefaultListSeparator - 3 - разделитель списка по умолчанию.
NumRows - Количество строк.
NumColumns - Количество столбиков.
InitialColumnWidth - Начальная ширина каждого столбца, в пунктах.
Format – Определяет формат таблицы и содержит значение константы WdTableFormat.
ApplyBorders - TRUE - применять границы.
ApplyShading - TRUE - применить затенение.
ApplyFont - TRUE применять свойства шрифтов.
ApplyColor - TRUE применять цветовые свойства.
ApplyHeadingRows - TRUE - применить свойства заголовок-строка.
ApplyLastRow - TRUE - применить свойства последней строке.
ApplyFirstColumn - TRUE - применить свойства первого столбцов.
ApplyLastColumn - TRUE - применить свойства последнего столбца.
AutoFit - TRUE - уменьшить ширину столбцов таблицы как можно больше.
AutoFitBehavior - Устанавливает правила авто-подбора (если DefaultTableBehavior содержит значение wdWord8TableBehavior, то этот аргумент игнорируется, VBA Selection), содержит значения константы WdAutoFitBehavior:
- wdAutoFitContent - 1 - автоматически размер
- wdAutoFitFixed - 0 - фиксированный размер
- wdAutoFitWindow - 2 - автоматический размер по ширине активного окна
DefaultTableBehavior - Значение, указывающее, следует ли автоматически изменять размер ячеек таблицы по содержимому. Selection VBA. Содержит значение константы WdDefaultTableBehavior:
- wdWord8TableBehavior - 0 - отключает Авто-подбор (по умолчанию)
- wdWord9TableBehavior - 1 - включить Авто-подбор
Хорошо, с теоретической частью мы закончили, теперь можно приступить к программированию.
Примера на языке VBScript – выделение текста в редакторе Word
В данном примере в цикле For (смотрите статью "Урок 6 по VBScript: Циклы for…next и for each…next"), который выполняется шесть раз, происходит вставка перевода на новую строку, вставка текстовой фразы и перемещаем курсов к конец строки. С помощью оператора with мы можем экономить размер программного кода – не нужно лишний раз писать имя класса. Вконце происходит выделение текста Word и преобразование его в таблицу.
Примера на языке JScript – выделение текста в редакторе Word
Логика работы данного программного кода аналогичны предыдущему примеру, тут мы уже использовали цикл for языка JS, читайте в статье "Урок 9 по JScript - оператор цикла for". Тут тоже использовался оператор with, обратите внимание, что имена переменных изменились, а в конце каждой строки кода прописана точка с запятой.
Примера на языке Visual Basic for Application – выделение текста в редакторе Word
Хорошо, давайте продолжим рассматривать методы класса Selection.
EndOf () – Перемещает курсор в конец выделения.
StartOf () – Перемещает курсор в начало выделения.
SetRange (start, end) – Позволяет задать начальное и конечное значение для выделения текста Word.
TypeText () – Выполняет ту же функцию, что и свойство Text – ввод информации.
TypeParagraph () - Метод вставляет параграф.
Copy (), Cut (), Paste (), Delete () – Копирует, вырезает, вставляет и удаляет выделенный текст в Word.
CopyAsPicture () – Копирует выбранный материал как изображение.
И так, теперь рассмотрим программный код с данными методами.
По сути, данный программный код практически аналогичен предыдущим. Тут в цикле происходит вставка данных несколько раз, а далее следуют операции выделения текста в документе Word, его копирование и вставка.
Ну и в заключение, привожу программный код для макроса:
Хорошо, на этом можно закончить данную статью. Параллельно, информацию по работе с классом Selection можете рассмотреть еще две публикации, в которых я рассмотрел остальные методы и свойства класса Selection.
Спасибо за внимание. Автор блога Владимир Баталий
Представляет текущий выделенный фрагмент в окне или области. Выделенный фрагмент представляет выбранную (или выделенную) область в документе или представляет точку вставки, если в документе ничего не выбрано. В области окна документа может быть только один объект Selection, а в приложении только один объект Selection может быть активным.
Этот метод изменился. При использовании команд выделения VBA, таких как Selection.BoldRun , для выделения пользователей с примечаниями больше не применяется полужирное форматирование для текста, выделенного пользователем, или для команды Selection.TypeTxt ; также при выделении пользователей с примечаниями больше не вставляется текст.
Примечания
Используйте свойство Selection, чтобы возвратить объект Selection. Если для свойства Selection не используется квалификатор объекта, Microsoft Word возвращает выделение из активной области окна активного документа. В следующем примере копируется текущий выделенный фрагмент из активного документа.
В следующем примере удаляется выделенный фрагмент из третьего документа в коллекции Documents. Документ необязательно должен быть активен для доступа к текущему выделенному фрагменту.
В следующем примере показано, как скопировать выделенный фрагмент из первой области активного документа и вставить его во вторую область.
Свойство Text является свойством по умолчанию объекта Selection. Используйте это свойство, чтобы задать или вернуть текст в текущем выделенном фрагменте. В следующем примере текст в текущем выделенном фрагменте назначается переменной strTemp , после чего удаляется последний символ, если он является знаком абзаца.
Объект Selection содержит различные методы и свойства, с помощью которых можно свернуть, развернуть или иным способом изменить текущий выделенный фрагмент. В следующем примере точка вставки перемещается в конец документа и выбираются последние три строки.
Объект Selection содержит различные методы и свойства, с помощью которых можно редактировать выделенный текст в документе. В следующем примере показано, как выделить первое предложение в активном документе и заменить его новым абзацем.
В следующем примере удаляется последний абзац первого документа в коллекции Documents, который затем добавляется в начало второго документа.
Объект Selection содержит различные методы и свойства, с помощью которых можно изменить форматирование текущего выделенного фрагмента. В следующем примере показано, как изменить шрифт текущего выделения с Times New Roman на Tahoma.
Используйте такие свойства, как Flags, Information и Type, чтобы получить сведения о текущем выделенном фрагменте. Следующий пример можно использовать в процедуре, чтобы определить, есть ли в активном документе выделенный фрагмент; при его отсутствии оставшаяся часть процедуры пропускается.
Даже если выделенный фрагмент свертывается в точку вставки, он не обязательно должен быть пустым. Например, свойство Text будет по-прежнему возвращать символ справа от точки вставки; этот символ также отображается в коллекции Characters объекта Selection. Однако вызов методов, таких как Cut или Copy, из свернутого выделения приводит к ошибке.
Пользователь может выделить область в документе, не представляющую смежный текст (например, при использовании клавиши ALT с кнопкой мыши). Так как поведение такого выделения может быть непредсказуемым, можно включить в код шаг, который проверяет свойство Type выделенного фрагмента перед выполнением каких-либо операций над ним ( Selection.Type = wdSelectionBlock ).
Аналогично, выделенный фрагмент, включающий ячейки таблицы, также может привести к непредсказуемому поведению. Свойство Information сообщит, находится ли выделенный фрагмент в таблице ( Selection.Information(wdWithinTable) = True ). В следующем примере определяется, является ли выделенный фрагмент нормальным (например, это не строка или столбец в таблице, не является вертикальным блоком текста); его можно использовать для тестирования текущего выделенного фрагмента перед выполнением каких-либо действий над ним.
Объекты Range используют много таких же методов и свойств, что и объекты Selection, поэтому использование объектов Range предпочтительнее для управления документом, если нет причин физически изменять текущий выделенный фрагмент. Дополнительные сведения об объектах Selection и Range содержатся в статьях Работа с объектом Selection и Работа с объектами Range.
Методы
Свойства
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Читайте также: