Меню

Vba объекты word таблица

Часть II

Программирование на VBA в Word

Глава 5

Вывод текста в документ Word

5.1. Основные объекты Word

Дополнительно ко всем возможностям программирования на VBA, рассмотренным в части I, можно добавить возможности вывода всех результатов вычислений, преобразований, сообщений в документ Word, с возможностью дальнейшего отправления на печать. Для этого необходимо рассмотреть основные объекты приложения Word.

Ключевым в объектной модели Word является объект Application, так как он содержит все остальные объекты Word. Его элементами на разных уровнях иерархии являются около 180 объектов. Сам корневой объект Application имеет более сотни элементов: свойств, методов и событий.

Свойства объекта Word.Application

Свойства любого объекта делятся на две группы: свойства-участники (объекты) и терминальные свойства (обычные переменные VBA).

Единую систему организации панелей меню и инструментальных кнопок обеспечивает объект CommandBars, справок – Assistant, поиска – FileSearch.

Центральными объектами Word являются коллекции Documents и Templates, точнее составляющие их элементы, сам документ и шаблоны.

Рассмотрим объекты второго плана.

Объект AutoCorrect поддерживает работу по автоматической коррекции набираемых текстов. Его возможности эквивалентны команде Автозамена меню Сервис.

Объект Browser позволяет перемещать точку вставки, указывающую на объекты в документе.

Коллекция объектов Dialogs представляет совокупность диалоговых окон, встроенных в Word. Добавлять новые или удалять элементы этой коллекции программным путем нельзя. Но соответствующие окна можно открыть и показать на экране дисплея и тем самым организовать диалог пользователем по теме, заданной соответствующим окном.

Три объекта, связанные с проверкой грамматики и орфографии: Languages, Dictionaries, SpellingSuggestions, – позволяют установить нужный язык, выбрать словарь, в том числе пользовательские словари, а также работать со списком слов, предлагаемых для исправления при обнаружении ошибки правописания. Команды Правописание и Язык меню Сервис предоставляют аналогичные, функциональные возможности при работе с документом вручную.

С помощью объекта Options можно программным путем установить различные опции приложения и документа аналогично тому, как если бы вы выбрали команду Параметры в меню Сервис.

Работа с документами и класс Document

Когда открывается приложение, создается коллекция документов Documents, содержащая все открытые документы. В начальный момент коллекция содержит минимум один новый или ранее существовавший документ. Новый документ добавляется методом Add, а уже существующий – методом Open объекта Documents. Чтобы добраться до нужного документа, достаточно указать его индекс – имя файла, хранящего документ, или его порядковый номер в коллекции. Для той же цели можно использовать и метод Item, но обычно он опускается. Метод Save позволяет сохранить документ, а метод Close, сохраняя документ в файле, закрывает его и удаляет из коллекции.

Глобальное свойство Dialogs возвращает коллекцию диалоговых окон. Константа wdDialogFileOpen задает конкретное диалоговое окно – объект класса Dialog.

Классы, задающие структуризацию текста документа

Текст – это основа большинства документов. Его можно структурировать, оперируя различными единицами при решении тех или иных задач преобразования. Минимальной единицей текста обычно является символ. Кроме этого, существуют следующие единицы: слова, предложения, абзацы, а также более крупные образования: страницы, параграфы, главы.

Классы Characters, Words, Statements, Paragraphs, Sections позволяют работать с последовательностями (коллекциями) символов, слов, предложений, абзацев и разделов. Самой крупной единицей после абзаца выступает раздел. Элементом коллекций Characters, Words и Statements является объект класса Range. Объект Range позволяет работать как с одним элементом, так и с произвольной последовательностью элементов. Документы, поддокументы, абзацы, разделы – все они имеют метод или свойство Range, возвращающее интервал, связанный с объектом. Поэтому работа с текстом так или иначе ведется через методы и свойства объекта Range.

События объекта Document

Объект Document может реагировать на три события, возникающие в результате действий пользователя.

События объекта DocumentДокумент и его части

Рассмотрим основные классы, определяющие структуру документа.

1. Subdocuments (Subdocument) – коллекция и сам поддокумент. Есть некоторый разумный предел размера одного документа. Если в документе больше 10–20 страниц, работать с ним становится неудобно. В этом случае в нем выделяют главный документ и поддокументы. Главный документ в этом случае имеет коллекцию поддокументов, каждый из них является, по сути, документом, с которым можно работать независимо.

Метод AddFromRange класса SubDocuments создает поддокумент, выделяя из главного документа область, заданную параметром Range.

2. Tables (Table), TablesOfAuthoritiesCategories (T.O.A.C), TablesOfAuthorities (TableOfAuthorities), TablesOfContents (TablesOfContent), TablesOfFigures (TablesOfFigure). Класс Table определяет «обычные» таблицы с произвольным количеством строк и столбцов и произвольным заполнением полей. Остальные классы задают таблицы специального вида.

3. Shapes(Shape), InlineShapes(InlineShape) – эти две коллекции с их элементами позволяют добавлять в документ рисунки, но не только их. ActiveX– и OLE-объекты также являются элементами этих коллекций. Элементы этих двух коллекций отличаются тем, как они привязаны к документу: первые могут свободно перемещаться, вторые жестко привязаны к заданной области документа.

4. Lists(List), ListParagraphs(ListParagraph), listTemplates (ListTemplate) – списки удобно вводить в документ, когда имеешь дело с перечислением. Списки можно оформлять в соответствии с шаблоном. Существуют две группы шаблонов: нумерованные списки и списки-бюллетени. Коллекция ListTemplates содержит шаблоны оформления списков, а класс ListTemplate описывает конкретный шаблон. Шаблон применяется к списку абзацев и придает ему структуру, заданную шаблоном. Коллекция Lists содержит те списки документа (списки абзацев), что оформлены как нумерованные списки или списки-бюллетени. Коллекция ListParagraphs представляет список абзацев всех списков документа. Свойством ListParagraphs, которое возвращает объект соответствующего класса, обладает не только документ, но и объекты List и Range. Так что при наличии списка – объекта List можно выделить список абзацев. Чаще приходится выполнять обратную операцию – применять к списку абзацев один из возможных шаблонов, придав ему «настоящую» структуру списка. Тогда используют объект ListFormat.

5. Comments(Comment), Bookmarks(Bookmark), FootNotes (FootNote), EndNotes(EndNote), Fields(Field) – эти коллекции и их элементы отражают независимые, но близкие по духу понятия. Это части документа, косвенно связанные с ним. При нормальном просмотре документа они могут быть и не видны.

Коллекция comments и класс comment задают комментарии. Комментарии, как известно, вводятся для пояснения тех или иных терминов или понятий документа. Формально они приписываются некоторой области – объекту range.

Большой документ, к отдельным частям которого приходится часто обращаться, стоит снабдить закладками. Коллекция bookmarks задает все закладки данного документа.

Еще один способ комментирования – сноски. Они могут быть двух видов: подстраничные (внизу страницы) и концевые (в конце документа). Первые собраны в коллекцию footnotes, вторые – endnotes.

6. Fields (Field) – эта коллекция позволяет работать с полями документа. Одна из особенностей полей состоит в том, что их значения обновляются автоматически в зависимости от изменившихся внешних условий или контекста.

7. Story Ranges (Range) – эта коллекция представляет совокупность частей документа, называемых фрагментами (Story). Количество различных фрагментов документа фиксировано. Нельзя добавлять элементы в эту коллекцию обычным способом, используя метод Add. Фрагменты появляются в коллекции, когда создается соответствующая часть документа.

Фрагменты имеют тип, задаваемый константами из перечисления wdStoryType. Главный фрагмент – текст документа, тип которого задается константой wdMainTextStory. Комментарии, ссылки, колонтитулы составляют фрагменты других типов, т. е. сам фрагмент является объектом Range. Так что благодаря фрагментам можно, например, работать с коллекцией комментариев как с единой областью.

8. Variables (Variable) – с документом можно связать коллекцию переменных типа Variant. Это важная для программистов коллекция, так как время жизни переменных, в нее входящих, совпадает со временем жизни документа. Тем самым появляется возможность сохранять информацию о работе той или иной процедуры между сеансами. Например, можно иметь счетчики, подсчитывающие число вызовов макроса, и в зависимости от этого по-разному определять его дальнейшую работу.

Объекты Range и Selection

Объект Document имеет метод Range, возвращающий объект Range, и метод Select, создающий объект Selection. Метод Range – это функция, возвращающая как результат объект Range; метод Select – это процедура без параметров, которая создает объект Selection в качестве побочного эффекта. Объект Range имеет метод Select, превращающий область объекта Range в выделенную. Тем самым метод Select определяет новый объект Selection. Симметрично, объект Selection имеет свойство Range, возвращающее объект Range, соответствующий выделенной области.

Читайте также:  Как рассчитать НДС Пример расчета

Большинство ранее описанных частей документа являются и частями (свойствами) объектов Range и Selection.

Объект Range напоминает матрешку: в каждую область вложена область поменьше. Вот пример корректного (хоть и не самого эффективного) задания объекта Range:

Объекты Range и Selection позволяют выполнять основные операции над текстом: «выделить», «добавить», «заменить», «удалить». У наших объектов большой набор методов, позволяющих реализовать эти операции. Все рассматриваемые здесь методы принадлежат обоим объектам, если не сделана специальная оговорка.

Выделение

Выделить некоторую часть текста по существу означает определить объект Range или Selection. Объекты задают некоторую область в тексте документа, а их свойства Start и End позволяют установить начало и конец этой области. Меняя значения свойства, можно задать нужную область выделения.

Move является основным методом перемещения точки вставки. Остальные методы этой группы – в той или иной степени его модификации. Метод Move(Unit, Count) сжимает область в точку, стягивая ее в начало или конец, а затем перемещает точку вставки. Параметр Unit определяет единицы перемещения, a Count – количество этих единиц (по умолчанию 1). Знак переменной Count задает направление стягивания и перемещения. Положительные значения этого параметра задают стягивание к концу и перемещение вперед, отрицательные – стягивание в начало и перемещение назад. Чистое стягивание без перемещения точки вставки задается как перемещение на одну единицу. Метод возвращает количество единиц, на которое фактически произошло перемещение, или 0, если оно не осуществлено. Параметр Unit принимает значения wdCharacter (по умолчанию), wdWord, wdSentence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow и wdTable.

Методы перемещения на сам текст не влияют – лишь изменяют область, заданную объектами Range и Selection. Поэтому эти методы применимы только к переменным типа Range, но не к фиксированным областям. Например, запись

не имеет эффекта, поскольку область первого абзаца – вещь неизменяемая. Метод Move стягивает область в точку, которая и перемещается, поэтому после его выполнения область исчезает, остается только точка вставки. Методы MoveStart и MoveEnd перемещают начальную или конечную точку области, обычно тем самым расширяя область.

Удаление текста

Метод Delete позволяет удалить текст. Вызванный без параметров, он удаляет вызывающий его объект Range или Selection. Если он применен в форме Delete(Unit,Count), удаляется часть текста в указанной области. Параметр Unit задает единицы, но при удалении возможны только два значения: wdWord и wdCharacter. Параметр Count задает количество удаляемых единиц. Если область стянута в точку, удаляются символы перед точкой вставки или после нее в зависимости от знака параметра Count.

Вставка текста

Группа методов Insert объектов Range и Selection позволяет осуществлять вставки в документ. Для вставки текста используются методы InsertBefore(Text) и InsertAfter(Text). Параметр text типа string задает текст, вставляемый до или после области, заданной объектами range или selection. После вставки текста область автоматически расширяется, включая в себя добавляемый текст.

Свойство Text позволяет заменять текст в выделенной области, поэтому нет нужды вызывать метод Insert(Text). Методы InsertBefore и InsertAfter безопасны, так как текст добавляется, не изменяя содержимого области. Совсем иное дело – методы вставки, которые далеко не безопасны. При вставке внутрь области, например при использовании метода InsertSymbol или InsertParagraph, заменяется содержимое области.

Работа с буфером

Метод Сору, не имеющий параметров, копирует объект (содержимое области) в буфер. Метод cut, действуя аналогично, должен бы заодно и удалять объект. Но сам объект не удаляется – только стягивается в точку, так что над ним возможны дальнейшие операции.

Иногда в буфер копируют не текст, а его формат. Этим занимается метод CopyFormat, копирующий формат по первому символу объекта selection. Если этот символ – метка абзаца, копируется формат абзаца. Методом CopyFormat обладает только объект selection.

Метод Paste позволяет поместить («приклеить») содержимое буфера в область, заданную объектами Range и Selection. Эта операция опасна, так как происходит замена, а не добавление текста. Поэтому обычно метод Paste применяется к объектам Range и Selection, предварительно стянутым в точку вставки. Метод PasteFormat применяет форматирование, хранящееся в буфере, к объекту Selection.

Например, создадим макрос, который вставляет список «урок, экзамен, сдал!», копирует его и помещает еще раз на лист.

Sub Макрос1()

With Selection.ParagraphFormat

Selection.TypeText Text:=»Работа с текстом:»

Selection.TypeParagraph

With

ListGalleries(wdBulletGallery).ListTemplates(1)._ListLevels(1)

End With

End With

ListGalleries(wdBulletGallery).ListTemplates(1).Name = «»

Selection.Range.ListFormat.ApplyListTemplate

ListTemplate:=ListGalleries(wdBulletGallery).ListTemplates(1), ContinuePreviousList:=False, ApplyTo:= _wdListApplyToWholeList, DefaultListBehavior:=wdWord10ListBehavior

Selection.TypeText Text:=»урок»

Selection.TypeParagraph

Selection.TypeText Text:=»экзамен»

Selection.TypeParagraph

Selection.TypeText Text:=»сдал»

Selection.TypeParagraph

Selection.Range.ListFormat.RemoveNumbers

NumberType:=wdNumberParagraph

Selection.TypeParagraph

Selection.Font.Bold = wdToggle

Selection.Font.Italic = wdToggle

Selection.TypeText Text:=»Работа завершена!»

Selection.WholeStory

Selection.Copy

Selection.PasteAndFormat (wdPasteDefault)

Selection.PasteAndFormat (wdPasteDefault)

End Sub

5.2. Форматирование документа

Наиболее важной особенностью работы на VBA в Word является вставка текста в документ при работе с приложениями. Для этого служат объекты Range и Selection, которые являются главными для практически любых операций, которые можно выполнять с помощью Word VBA. Некоторые из этих действий можно применять к документам в целом, но в общем случае вам необходим диапазон или выделенная область, прежде чем вносить изменения. Мы, однако, рассмотрим действия с документом при его создании.

Открытый документ Word уже содержит объекты Range, соответствующие многим его элементам. Каждый абзац, таблица, ячейка таблицы, комментарий и т. д. определяют диапазоны. Например, для того чтобы вставить некоторый текст в уже существующий документ, необходимо прописать код:

Причем данная строка будет расположена в конце существующего параграфа. С другой стороны, используя объект Selection, можно также вставить некоторый текст в документ, используя метод Add и присвоение свойства Text объекту Selection:

If Documents.Count = 0 Then Documents.Add

Selection.Text = «Изучение работы с текстом в документе Word является важной составной частью умения программировать в VBA, « + TextBox1.Text +», и отвечает запросам всех программистов!»

В результате выполнения данного программного кода в документе Word будет выведена строка:

Изучение работы с текстом в документе Word является важной составной частью умения программировать в VBA, Светлана, и отвечает запросам всех программистов!

Здесь имя Светлана, например, считано с текстового поля некоторой формы, имеющей всего одно поле ввода для имени и кнопку «Вывод текста» (рис. 64).

Рис. 64. Форма ввода данных

При работе с текстом на рабочем листе Word необходимо знать следующие коды:

Источник

VBA Excel. Создание таблиц в документе Word

Создание таблиц в документе Word из кода VBA Excel. Метод Tables.Add, его синтаксис и параметры. Объекты Table, Column, Row, Cell. Границы таблиц и стили.

Работа с Word из кода VBA Excel
Часть 4. Создание таблиц в документе Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5]

Создание таблиц в документе Word

Таблицы в VBA Word принадлежат коллекции Tables, которая предусмотрена для объектов Document, Selection и Range. Новая таблица создается с помощью метода Tables.Add.

Синтаксис метода Tables.Add

Expression – выражение, возвращающее коллекцию Tables.

Параметры метода Tables.Add

  • Range – диапазон, в котором будет создана таблица (обязательный параметр).
  • Rows – количество строк в создаваемой таблице (обязательный параметр).
  • Columns – количество столбцов в создаваемой таблице (обязательный параметр).
  • DefaultTableBehavior – включает и отключает автоподбор ширины ячеек в соответствии с их содержимым (необязательный параметр).
  • AutoFitBehavior – определяет правила автоподбора размера таблицы в документе Word (необязательный параметр).

Создание таблицы в документе

Создание таблицы из 3 строк и 4 столбцов в документе myDocument без содержимого и присвоение ссылки на нее переменной myTable:

Создание таблицы из 5 строк и 4 столбцов в документе Word с содержимым:

Для указания точки вставки таблицы присваиваем числовой переменной количество символов в документе минус один. Вычитаем единицу, чтобы исключить из подсчета последний знак завершения абзаца (¶), так как точка вставки не может располагаться за ним.

Последний знак завершения абзаца всегда присутствует в документе Word, в том числе и в новом без содержимого, поэтому такой код подойдет и для пустого документа.

Читайте также:  Функции современной науки и ее методы

При создании, каждой новой таблице в документе присваивается индекс, по которому к ней можно обращаться:

Источник



Vba объекты word таблица

1.Коллекция Tables .

Таблица представляет собой упорядоченную структуру, предназначенную для хранения организованных в виде строк и столбцов наборов данных. Элемент таблицы, находящийся на пересечении строки и столбца, называется ячейкой.

Таблица Word имеет такую же структуру, как и электронная таблица Excel – элемент таблицы, находящийся на пересечении строки и столбца, называется ячейкой и идентифицируется по имени столбца и номеру строки.

В VBA для доступа к таблицам используется объект Tables , являющийся семейством объектов Table , каждый из которых связан с конкретной таблицей. Для получения ссылки на семейство Tables можно использовать свойство Tables объекта Document .

Общее число таблиц, имеющихся в документе, содержится в свойстве Count . Для получения доступа к конкретной таблице можно использовать метод Item , который является методом по умолчанию.

Set oblTable = objDocument.Tables.Item ( Key)

Параметр Key , является уникальным идентификатором каждой таблицы, хранящейся в объекте Tables .

Для создания новой таблицы используется метод Add объекта Tables . Этот метод возвращает ссылку на созданную таблицу( Table ).

objTables.Add (Range, NumRows , NumColums )

Параметр Range позволяет указать область документа, куда будет вставлена таблица. Если параметр не пустой, т.е. имеется выделенная область, то она будет заменена вставляемой таблицей.

Параметры NumRows , NumColums позволяют указать на число строк и столбцов таблицы.

Пример: создадим таблицу в выделенном месте или там где стоит курсор.

2.Форматирование таблицы.

После создания таблицы ее можно отформатировать нужным образом: добавить заливку, изменить формат границ, изменить стиль и т.д.

В приложении Word входит ряд готовых профессиональных шаблонов для форматирования таблиц, которые позволяют значительно сэкономить время оформления таблицы.

Для их применения используется метод AutoFormat .

objTable.AutoFormat ( Format, [ ApplyBorders , ApplyShading , ApplyFont , ApplyColor , ApplyHeadingRows , ApplyLastRow , ApplyFirstColumn , ApplyLastColumn , AutoFit])

Параметр Format содержит один из допустимых форматов. Список всех имеющихся форматов и результат их применения можно увидеть в списке Стили таблицы окна диалога Автоформат таблицы (таблица ® автоформат ).

Параметр ApplyBorders указывает, должны ли использоваться границы, установленные по умолчанию для данного формата. Если True (значение по умолчанию), то текущие границы будут заменены границами, предусмотренными в применяемом автоформате .

Параметр ApplyShading указывает, должна ли использоваться заливка. Если True (значение по умолчанию), то для таблицы будет установлена заливка в соответствии со значением, предусмотренном в применяемом автоформате .

Параметр ApplyFont указывает, должен ли изменятся шрифт таблицы. Если True , то для текста в таблице будет применен шрифт, предусмотренный в применяемом автоформате .

Параметр ApplyColor указывает на необходимость использования цветового оформления цветового оформления таблицы. По умолчанию имеет значение True .

Параметр ApplyHeadingRows указывает на необходимость изменения формата заголовков столбцов (первой строки таблицы). По умолчанию имеет значение True.

Параметр ApplyLastRow указывает на необходимость изменения формата последней строки таблицы. По умолчанию имеет значение False , означающее, что особый формат к последней строке не применяется.

Параметр ApplyFirstColumn указывает на необходимость изменение формата первого столбца таблицы. По умолчанию имеет значение True .

Параметр ApplyLastColumn указывает на необходимость изменение формата последнего столбца таблицы. По умолчанию имеет значение False , означающее, что особый формат к последнему столбцу не применяется.

Параметр AutoFit указывает на автоматический подбор ширины столбцов в зависимости от размещаемых в них данных. По умолчанию имеет значение True .

Пример: применяем автоформат Классический 2 к таблице, расположенной первой от начала активного документа.

ActiveDocument.Tables ( 1).AutoFormat Format:=WdTableFormat.wdTableFormatClassic2

Тип используемого пользовательского форматирования содержится в свойстве AutoFormatType . Свойство возвращает одно из значений типа wdTableFormat .

Для форматирования границ таблицы используется свойство Borders , которое возвращает ссылку на объект типа В orders , связанный с границами данной таблицы.

Пример: назначение первой таблице в документе оформление границ.

With ActiveDocument.Tables ( 1).Borders

. OutsideLineStyle = wdLineStyleSingle внешние границы

. InsideLineStyle = wdLineStyleSingle внутренние границы

End With

3.Строки и столбцы.

Таблица состоит из набора строк и столбцов. Строки содержатся в семействе Rows , возвращаемое свойством Rows , а столбцы – в семействе Columns , возврщаемое свойством Columns .

Определенная строка или столбец связаны с объектами типа Row или Column . Доступ к конкретной строке или столбцу осуществляется с помощью метода Item , являющегося для объектов Rows и Columns методом по умолчанию.

Индексация столбцов и строк начинается с единицы. Индекс «единица» получает первая сверху строка и крайний левый столбец. Индекс последней строки и столбца можно получить с помощью свойства Count , которое возвращает количество членов в коллекции.

Пример: выпадающее окно с сообщением о количестве столбцов в таблице 1.

MsgBox ActiveDocument.Tables ( 1). Columns.Count

Для получения ссылок на первую или последнюю строку (столбец) можно использовать свойства First и Last .

Для добавления в таблицу новых строк (столбцов) используется метод Add .

Параметр Before – указывает, перед какой строкой будет вставлена строка. Если параметр опущен, то строка добавляется в конец таблицы.

Set tabv = ActiveDocument.Tables( 1).Rows.Add(beforerow:=ActiveDocument.Tables(1).Rows(1))

Чтобы установить высоту строки, используется метод SetHeight .

objRow.SetHeight ( RowHeight , HeightRule )

параметр RowHeight указывает на новую высоту строки в пунктах.

Параметр HeightRule – указывает на способ изменения высоты:

WdRowHeightAtLeast – размер, указанный в параметре RowHeigh , является минимальным.

WdRowHeightAuto — размер, указанный в параметре RowHeigh ,является точным.

WdRowHeightExactly – автоматический подбор высоты строк (параметр RowHeigh игнорируется).

Получить информацию о текущей ширине строки и правиле ее изменения можно с помощью свойств Height и HeightRule .

objRow . Height [ =Height ]

Параметр Height (тип Single ) позволяет задать необходимую высоту строки в пунктах.

objRow . HeightRule [ =Rule ]

Параметр Rule указывает на правило изменения ширины ячейки:

• wdRowHeightAtLeast — минимальная ширина, которая может быть на­значена строке, указывается в свойстве Height ;

• wdRowHeightExactly — ширина строки должна быть точно равна зна­чению, указанному в свойстве Height ;

• wdRowHeightAuto — ширина строки подбирается автоматически в за­висимости от размера используемого шрифта или размера вставок.

Чтобы установить одинаковую высоту всех строк, необходимо исполь­зовать метод DistributeHeight объекта Rows .

objRows . DistributeHeight

Для украшения текста документа часто используются прием создания отступа между левой границы ячейки и текстом. Этот прием часто применяют при создании таблиц на web-страницах. Для создания отступа в ячейках таблицы можно использовать свойство SpaceBetweenColumns . При использовании этого свойства в объекте Rows выполняется добавление отступа во все ячейки таблицы, а при использовании в Row — только для ячеек данной строки.

objRows.SpaceBetweenColumns [ = Space ]

Параметр Space (тип Single ) позволяет указать на ширину отступа в пунктах. Значение, передаваемое параметром Space , не может быть меньше 0 и больше ширины ячейки.

В приведенном ниже примере показан код, позволяющий создать в первой строке первой таблицы активного документа отступ, равный 36 пунктам.

With ActiveDocument.Tables ( l)

. Rows( l). SpaceBetweenColumns = InchesToPoints (0.5)

Чтобы установить ширину столбца и правило ее изменения применя­ется метод SetWidth . Этот метод используется как в объекте типа Columns , так и объекте типа Column . Если используется метод объекта Columns , то изменения ширины касаются всех столбцов, а если метод объекта Column — то только данного столбца.

о bjColumns.SetWidth ( ColumnWidth , RulerStyle )

Параметр ColumnWidth (тип Single ) указывает на новую ширину столб­ца в точках, а параметр RulerStyle (тип WdRulerStyle ) — на способ изме­нения ширины. Параметр RulerStyle может принимать следующие значения:

• wdAdjustNone (значение по умолчанию) — ширина столбца соответ­ствует указанному значению. Изменение ширины столбца выполня­ется за счет смещения левой или правой границы таблицы (столбца).

• wdAdjustSameWidth — ширина столбца соответствует указанному значению. Изменение ширины выполняется за счет смещения внутрен­них границ таблицы. Правая граница сохраняет свое положение.

• wdAdjustFlrstColumn — ширина первого столбца соответствует указан­ному значению. Изменение ширины выполняется за счет смещения правой границы столбца. Размер остальных столбцов сохраняется. Если ширина превышает суммарную ширину первой и второй ячеек, то происходит сдвиг правой границы таблицы.

• wdAdjustProportional — ширина первого столбца соответствует ука­занному значению. Размер остальных столбцов подбирается авто­матически, так чтобы общая ширина таблицы сохранилась.

• Для получения информации о текущей ширине столбца можно использовать свойство Width .

Читайте также:  Удельный вес алюминия и сплавов алюминия в таблице

О bjColumns.Width [ =Width ]

• Параметр Width (типа Single ) позволяет указать нужную ширину столбца.

• Чтобы установить одинаковую ширину всех столбцов, необходимо использовать метод DistributeWidth объекта Columns .

• Для автоматического подбора ширины столбцов используется метод AutoFit .

• Для удаления строк (столбцов) используется метод Delete .

• Доступ к ячейкам данной строки или столбца осуществляется с помощью объекта Cells , который является семейством объектов Cell , связанных с конкретными ячейками.

• Set objCells = objTables.Rows (key).Cells

• Set objCells = objTables.Columns (key).Cells

• Здесь objTables указывает на таблицу, с ячейками которой будет выполняться работа, а key – строка или столбец в таблице, ячейки которой входят в семейство Cells .

• Ссылку на определенную ячейку можно получить с помощью метода Cell объекта Table .

Set instable = ActiveDocument.Tables.Add ( Selection.Range , 4, 10)

Для добавления новой ячейки используется метод Add .

Параметр BeforeCell указывает на ячейку, перед которой должна быть вставлена новая ячейка. Если параметр опущен, то ячейка вставляется в конец столбца (строки). Метод возвращает ссылку на созданную ячейку.

Все ячейки таблицы имеют свой уникальный индекс. Для получения ссылки на ячейку из определенного семейства используется ее порядковый номер: крайняя правая (или верхняя) ячейка имеет номер один, а последняя (нижняя) – значение, определяемое свойством Count для данного объекта Cells .

Чтобы узнать положение текущей ячейки в строке или столбце, можно использовать свойство RowIndex или ColumnIndex . Оба свойства возвращают ссылку на объект типа Cell и предназначены только для чтения.

Для выделения (активизации) текущей ячейки используется метод Select .

Для объединения нескольких ячеек в одну (инструмент слияния) используется метод Merge .

Параметр MergeTo (типа Cell ) содержит объект типа Cell (ячейка), с которым выполняется слияние. Если указана ячейка, не имеющая общей границы с текущей, то выполняется слияние всех ячеек, находящихся в прямоугольнике, у которого данная ячейка и ячейка, указанная в параметре MergeTo , являются угловыми.

Для разбиения объединенных ячеек или одной ячейки на несколько используется метод Split .

ObjCell . Split [ ( NumRows , NumColumns )]

Параметр NumRows (типа long ) содержит значение, указывающее на число строк, на которые должна быть разбита данная ячейка. Параметр NumColumns (типа long ) содержит значение, указывающее на число столбцов, на которые должна быть разбита данная ячейка.

ActiveDocument.Tables ( 1).Cell(1, 1).Split 2, 3

5.Вычисления.

Вычисления в таблицах Word выполняются так же, как и в любых других электронных таблицах. Разница заключается только в возможностях использования функций. По умолчанию в Word определенно не очень много функций, однако, используя возможности VBA по подключению дополнительных библиотек, например библиотеки функций Excel , их число можно значительно увеличить.

Для указания ячейке, что в ней будет выполнятся вычисление, используется метод Formula объекта Cell .

ObjCell.Formula (Formula, NumFormat )

Параметр Formula содержит строковое выражение, описывающее используемое выражение. Параметр NumFormat определяет числовой формат данных, которые будут отображены в данной ячейке.

При использовании стандартных инструментов вставки формул эти выражения содержатся в соответствующих полях. Например, выражение “= SUM ( A 4: C 4)” позволяет отобразить значение, получаемое в результате выполнения суммирования значений трех ячеек: А4, В4, С4. Кроме непосредственной ссылки на конкретные ячейки можно использовать общие ссылки, например на все ячейки, расположенные выше( Above ) или левее ( Left ).

По умолчанию в таблицах Word можно использовать следующие функции:

• Abs ( X ) — возвращает абсолютное значение числа или формулы (без знака);

• And ( X ; Y ) — возвращает значение 1, если оба логических выраже­ния, X и У, истинны, или 0 (ноль), если хотя бы одно из них ложно;

• Average ( List ) — возвращает среднее значение из списка значений List ,

• Count ( List ) — возвращает количество элементов в списке List ;

• Defined ( X ) — возвращает значение 1, если выражение X допустимо, или 0 (ноль), если выражение не может быть вычислено;

• Fal se — возвращает значение 0 (ноль);

• Int ( X ) — возвращает целую часть числа или значения формулы X ;

• Min ( List ) — возвращает наименьшее значение в списке List ;

• Max ( List ) — возвращает наибольшее значение в списке List ;

• Mod ( X ; Y ) — возвращает остаток от деления X на Y ;

• Not ( X ) — возвращает значение 0 (ложь), если логическое выражение X истинно, или 1 (истина), если оно ложно;

• Or ( X ; Y ) — возвращает значение 1 (истина), если хотя бы одно из двух логических выражений X и Y истинно, или 0 (ложь), если оба ложны;

• Product ( List ) — возвращает произведение значений, включенных в список List . Например функция «= Product (1,3,7,9)» возвращает значение 189;

• Round ( X ; У) — возвращает значение X , округленное до указанного десятичного разряда Y ;

• Sign ( X ) — указывает знак числа: возвращает значение 1, если X > О, или -1 в противном случае;

• Sum ( List ) — возвращает сумму значений или формул, включенных в список. List;

• True — возвращает значение 1.

• Параметр NumFormat , является маской, которая определяет формат числовых значений. Эта маска может содержать ряд специальных сим­волов, которые приведены ниже.

• 0 (нуль) — возвращает цифру. Если полученное значение не содер­жит цифру в этой позиции, то возвращается 0 (нуль). Например, если имеется выражение типа Formula :=»= 4 + 5″, NumFormat := «00,00», то возвращаемое значение будет следующим: «09,00».

• # — возвращает цифру. Если полученное значение не содержит цифру в этой позиции, возвращается пробел. Например, Formula:=”= 11 + 5″, NumFormat := «###» возвращает значение «-15».

• х — если « х » находится слева от десятичного разделителя, цифры расположенные слева от него, отбрасываются, а если справа — то значение округляется до указанного знака. Например, Formula :=»= 111053 + 111439″, NumFormat := » x $$$» возвращает значение «492», а Formula :=»= 1/8″, NumFormat := «0,00 x » возвращает значение «0,125».

. или , (десятичный разделитель) —задает положение десятичного разделителя. Например, выражение NumFormat : = «###, 00») возвращает значение типа «495,47».

• пробел (разделитель групп разрядов) — разделяет число на группы по три цифры в каждой. Например, выражение NumForrcat :»### » возвращает значение типа «2 456 800».

• минус) — добавляет минус к отрицательным или пробел — ко всем остальным значениям.

• + (плюс) — добавляет плюс к положительным, минус к отрицательным или пробел — к нулевым значениям.

• %, $, * и т. д. — включает в значение указанный знак. Например, выражение ( NumFormat := «##%») возвращает значение типа «33 %».

• Для автоматического вычисления суммы значений можно использовать метод AutoSum .

• После применения этого метода к данной ячейке в ней отображается значение, равное сумме значений всех ячеек, расположенных выше или левее данной.

Источник

Vba объекты word таблица

Итак. Word, Таблица, VBA

1. Надо выделить несколько столбцов и присвоить им определенные значения. Не знаю, как выделить несколько столбцов одновременно. Пока написал такой вот цикл, который выделяет столбцы по одному, но imho это бред (хоть и работает)

2. Как выделить диапазон ячеек? (почему-то когда включаю запись макросов, выделение мышью перестает работать)

Ага, спасибо. Я после Rows не догадался .Cells поставаить, поэтому ничего и не получалось.
Теперь все работает:

А первый вопрос? Тут можно как-то обойтись без цикла?

это уже не таблица — а некое кривобокое сооружение

посмотрите
-таблица -свойства-параметры
—поля ячеек=0
-таблица -свойства
—автоподбор по ширине страницы и по содержанию

Форматируется (автоширина, выравнивание по центру, шрифт (ЖИРНЫЙ), обрамление):

И все бы хорошо, пока не добавляются далее в эту таблицу строки.
Текст в добавляемых строках также форматируется по автоширине, шрифту (ОБЫЧНЫЙ), обрамлению, КРОМЕ ВЫРАВНИВАНИЯ.
В итоге в 1-й строке таблицы (шапке) пропадает njkmrj выравнивание по центру, но при этом жирный шрифт остается.
Вопрос — как сохранить выравнивание по центру в 1-й строке таблицы? Подскажите, пожалуйста код.
Заранее спасибо!

Модератор: Учимся использовать тэги оформления кода — FAQ

Сообщение было отредактировано: 19 июл 21, 11:59

К сообщению приложен файл. Размер — 13Kb

Сообщение было отредактировано: 18 июл 21, 00:04

Источник