Примеры управление нагрузкой vba word. Программирование в Word

05.04.2019 Интернет

Модуль поиска не установлен.

VBA Word, как это делается

(Окончание. Начало в №7)

События

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

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

Можно по-разному запрограммировать реакцию на щелчок мышью по полю Формы и по Командной кнопке в этой форме, процедуры обработки, казалось бы, одного события будут разными, т.к. будут принадлежать разным объектам. Также существует очередность возникновения событий, которую надо учитывать при их программировании. Например, событию Щелчок мыши (Click), предшествуют событие Нажатие клавиши мыши (MouseDown) и событие Отпускание клавиши мыши (MouseUp). Но надо заметить, что совсем не обязательно учитывать все события при написании вашей программы, нужно лишь выбрать те, которые вам действительно необходимы для работы. Обойтись без программирования обработки событий можно, но лишь только вы задумаете писать программу, где присутствуют пользовательские формы, вы сразу столкнетесь с необходимостью программирования процедур обработки событий.

Классы объектов

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

Объект, который создается на основе класса, называют экземпляром класса.

Модель объектов приложения

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

Окно просмотра объектов выводится следующим образом:

1. Активизируйте окно Редактор Visual Basic.

2. Выберите команду Вид\Просмотр объектов (или нажмите клавишу F2).

На экране появится окно Просмотр объектов (рис. 1).

3. Выберите требуемую библиотеку в списке библиотек, расположенном в левом верхнем углу.

В окне Классы появится список всех классов в выбранной библиотеке.

4. Выделите в списке Классы требуемый класс.

В правой части окна просмотра появится список компонент выбранного класса, т.е. его свойства, константы и методы.

5. Выделите в списке компонент нужную строку.

В окне справки, расположенном внизу, появится дополнительная информация.

Если нужна развернутая информация по компоненту класса, щелкните по значку "вопросительный знак" на панели инструментов.

ПРОГРАММИРОВАНИЕ В WORD.
Модель объектов Word

В приложении Word нам предстоит работать с его объектами. Поэтому рассмотрим их подробнее.

На рис. 2 приведена полная модель объектов Word. Главным объектом, стоящим на вершине иерархической пирамиды объектов, является сам Word, рассматриваемый как приложение (Application), на следующем уровне представлены наборы объектов (Documents, Dialogs, Windows и др.) и одиночные объекты (н-р, Selection). Каждый из них также содержит большое число объектов, свойств и методов. Например, объект Documents включает в себя объекты, которые связаны с ним, такие, как Words (слова), Paragraphs (абзацы), Bookmarks (закладки), Characters (символы), Document (документ) и т.д. Эти объекты в свою очередь содержат в себе еще объекты, свойства и методы. Те объекты, которые включают в себя схожие объекты, называют наборами или коллекциями (Collection), они отличаются именем, записанным в множественном числе (например, Documents, Windows, Words). С помощью свойств и методов, присущих объекту Коллекция, можно выделить из него один конкретный объект для обработки. Разные коллекции могут включать в себя одинаковые объекты, например, объект Words (Слова) принадлежит коллекции Documents (Документы), связан с объектом Selection (Выбор) и с объектом Range (Диапазон). Объект Words сам, в свою очередь, является коллекцией объектов. То, что объект принадлежит какой-то коллекции, не означает, что он рассматривается как часть чего-то общего.

Чтобы видеть всю модель объектов Word, воспользуемся окном Просмотр объектов в редакторе Visual Basic.

В окне редактора Visual Basic нажмите кнопку Просмотр объектов, в всплывающем меню списка Выбор библиотеки выберите Word. В правой части окна под заголовком Классы будут перечислены все наборы объектов Word, а слева - все свойства и методы выбранного объекта.

Перейдем к описанию основных объектов и коллекций объектов Word, их методов и свойств, а также примеров их использования.

Объект Application

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

Например, свойство ActiveDocument возвращает объект Document, а свойство с названием Application используется для возвращения объекта Application. Следующий пример показывает имя пользователя для Word. Это имя записывается в меню Сервис/Параметры во вкладке Пользователь. Инструкция MsgBox является функцией VBA, выводящей на экран диалоговое окно с сообщением MsgBox Application.UserName (рис. 3).

Многие из свойств и методов, которые возвращают наиболее общие объекты интерфейса пользователя - такие, как активный документ (свойство ActiveDocument) - могут использоваться без спецификатора объекта Application.

Например, вместо записи Application.ActiveDocument.PrintOut вы можете записывать просто ActiveDocument.PrintOut. Свойства и методы, которые могут использоваться без спецификатора объекта Application, рассматриваются как "глобальные". Чтобы увидеть глобальные свойства и методы в окне Просмотр Объектов, щелкните по строке <глобальные> наверху списка в блоке Классы.

Объект Application имеет более 80 свойств, отражающих все настройки приложения. Перечислим некоторые из них (табл. 1).


Как можно изменять свойства объекта Application в программе во время выполнения каких-либо действий? Существует несколько специальных процедур, с помощью которых можно это сделать. Эти процедуры имеют специальные имена и выполняются автоматически, во время некоторых операций (табл. 3).


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

Public Sub AutoNew()

Application.DisplayScrollBars = False

Application.DisplayStatusBar = False

Вообще-то, сохранять эти макрокоманды можно в любом шаблоне или документе. Исключение составляет макрос AutoExec, который работает только из шаблона Normal.dot сохраненным в папке, указанной как папка запуска.

Подобные действия можно произвести и с помощью процедур обработки событий объекта Application.

Событий у объекта Application немного (табл. 4).

Чтобы запрограммировать отклик на события объекта Application, необходимо предварительно выполнить ряд действий:

1. Объявить объектную переменную в модуле класса.

2. Записать процедуры обработки события.

3. Инициализировать объявленный объект из другого модуля.

Как объявить Объектную переменную

Для этого необходимо создать новый модуль класса и объявить объект типа Application с событиями. Для этого выберите в меню Вставка строку Модуль класса, в окне Программа нового модуля класса введите следующий код (рис. 4):

Public WithEvents App As Word.Application

Вызовите окно свойства и измените свойство Name с Класс1 на EventClassModule.

Описание Процедур Событий

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

Инициализация объявленного Объекта

До того как процедура будет выполнена, необходимо подключить объявленный в модуле класса объект (у нас он называется App) к объекту Application. Это делается следующим кодом из любого модуля.

Dim X As New EventClassModule

Sub Регистрация()

Set X.App = Word.Application

Теперь остается только выполнить процедуру Регистрация. Можно запустить ее из меню или вызвать из другой процедуры модуля. После этого объект App в модуле класса будет указывать на объект Word Application, и процедуры обработки события в модуле класса будут выполняться при возникновении событий.

Коллекция объектов Documents

Documents - это набор всех объектов Document, которые являются в настоящее время открытыми в Word.

Этому набору присущи свои свойства, методы и события.

Свойств у набора Documents немного (табл. 5).


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

For Each aDoc In Documents

aName = aName & aDoc.Name & vbCr "vbCr - это константа, определяющая символ возврата каретки (код 13)

Методов у набора Documents несколько больше (табл. 6).


Метод Add используется для создания нового пустого документа и добавления его к набору Documents. Следующий пример создает новый документ, основанный на шаблоне Normal.dot.

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

выражение.Add(Template, NewTemplate)

выражение - выражение, возвращающее объект Documents.

Template - необязательный параметр. Содержит имя шаблона, который будет использован для нового документа. Если параметр опущен, используется Normal.dot.

NewTemplate - необязательный параметр. Если параметр равен True, документ открывается как шаблон. По умолчанию значение False.

Метод Item используется для выбора конкретного элемента из набора. Элемент может быть определен по имени или по его номеру в наборе.

Синтаксис метода:

выражение.Item(Индекс)

Выражение - выражение, которое возвращает объект Documents.

Индекс - имя или индексный номер элемента набора.

Метод Item является заданным по умолчанию методом для наборов. Поэтому следующие две строки кода эквивалентны.

Application.Documents(1)

Application.Documents.Item(1)

Так же эквивалентны и следующие строки:

Application.Documents("Report.doc")

Application.Documents.Item("Report.doc")

Открывают файлы документов с помощью метода Open.

Синтаксис метода Open следующий:

выражение.Open(FileName, ConfirmConversions, ReadOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate, Revert, WritePasswordDocument, WritePasswordTemplate, Format)

выражение - это выражение, возвращающее объект Documents.

FileName - обязательный параметр "имя файла". Этим параметром указывается путь к документу. Можно записать несколько файлов, отделяя имена файлов пробелами.

ConfirmConversions - необязательный параметр, может принимать значения True, если необходимо отобразить диалоговое окно Convert File, если файл записан не в формате Word.

ReadOnly - необязательный параметр. Равен True, если файл открывается только для чтения.

AddToRecentFiles - необязательный параметр, если равен True, то файл добавляется к списку файлов внизу меню Файл.

PasswordDocument - необязательный параметр. Содержит пароль для открытия документа.

PasswordTemplate - необязательный параметр. Содержит пароль для открытия шаблона.

Revert - необязательный параметр. Если FileName содержит имя файла уже открытого документа, то при равенстве параметра True документ повторно открывается без сохранения произведенных изменений. Если значение параметра False, то активизируется уже открытый документ.

WritePasswordDocument - необязательный параметр. Содержит пароль, запрашиваемый при сохранении изменений документа.

WritePasswordTemplate - необязательный параметр. Содержит пароль для сохранения изменений шаблона.

Format - необязательный параметр. Содержит конвертер для преобразования файла. Может быть записан одной из констант: wdOpenFormatAuto, wdOpenFormatDocument, wdOpenFormatRTF, wdOpenFormatTemplate, wdOpenFormatText, или wdOpenFormatUnicodeText. Значение по умолчанию - wdOpenFormatAuto.

Для определения внешнего формата файла применяется свойство OpenFormat объекта FileConverter, которое возвращает значение, записываемое в этот параметр.

Следующий код открывает файл Sales.doc. Имя файла указывается в кавычках.

Documents.Open FileName:="C:\Мои документы\Sales.doc" " открывается документ "Sales.doc"

В следующем примере документы из набора Documents перебираются, чтобы найти в наборе документ, названный "Report.doc". Если этот документ имеется в коллекции Documents, он активизируется, если нет, то документ открывается.

For Each doc In Documents

If doc.Name = "Report.doc" Then found = True

If found <> True Then

Documents.Open FileName:="C:\Documents\Report.doc"

Documents("Report.doc").Activate

Метод Close используется для закрытия документов и имеет синтаксис:

выражение.Close(SaveChanges, OriginalFormat, RouteDocument)

выражение - выражение, которое возвращает объект Document или Documents.

SaveChanges - необязательный параметр. Определяет действие при сохранении документа. Может быть одна из следующих WdSaveOptions констант:

WdDoNotSaveChanges (не сохранять изменения);

WdPromptToSaveChanges (выдавать диалоговое окно с запросом на сохранение изменений);

WdSaveChanges (сохранять без запросов).

OriginalFormat - необязательный параметр. Определяет формат для сохранения документа. Может быть одна из следующих wdOriginalFormat констант: wdOriginalDocumentFormat, wdPromptUser, wdWordDocument.

RouteDocument - необязательный параметр. True, если документ направляется следующему получателю.

Следующая строка кода закрывает документ, названный "Report.doc", без сохранения изменения. В ней указывается параметр SaveChanges, которому константой присвоено значение "не сохранять изменения".

Documents("Report.doc").Close SaveChanges: = wdDoNotSaveChanges

Метод Save применяется для сохранения одного или всех документов. Метод имеет несколько видов записи, в зависимости от ожидаемого результата.

1. Выражение.Save.

Запись в этом виде сохраняет указанный документ или шаблон. Если документ или шаблон не были сохранены прежде, диалоговое окно Save As запрашивает пользователя относительно имени файла.

Здесь выражение - выражение, возвращающее объект Document или Template.

2. Выражение.Save(NoPrompt, OriginalFormat).

Такая запись сохраняет все документы в наборе Documents. Если документ не был сохранен прежде, диалоговое окно Save As запрашивает пользователя относительно имени файла. Также в этой записи присутствуют два необязательных параметра.

Параметр NoPrompt. Если этот параметр имеет значение True, то Word автоматически сохраняет все документы. Если значение параметра False, то Word запрашивает пользователя о сохранении каждого документа, у которого были произведены изменения.

Параметр OriginalFormat определяет путь для сохранения документов. Может быть равен одной из следующих wdOriginalFormat констант: wdOriginalDocumentFormat, wdPromptUser, или wdWordDocument.

3. Выражение.Save(Comment)

Эта запись сохранит версию указанного документа с комментариями.

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

ActiveDocument.Save

Следующий пример сохраняет каждый документ в наборе Documents без запроса к пользователю.

Documents.Save NoPrompt:=True, OriginalFormat:=wdOriginalDocumentFormat

Если файл Sales.doc открыт, то следующий код сохраняет версию фйла с добавленными к нему комментариями.

For Each doc in Documents

If Instr(1, doc.Name, "Sales.doc", 1) > 0 Then

doc.Versions.Save Comment:="незначительные изменения"

Объект Document

Представляет объект Document - элемент набора Documents. В отличие от набора Documents, объект Document насчитывает более сотни свойств. В основном свойства объекта Document используются для возвращения другого объекта или набора объектов, чтобы отработать уже с его свойствами и методами. В документе в основном приходится работать со словами, параграфами, символами, закладками, поэтому рассмотрим некоторые из свойств объекта Document, возвращающие эти объекты (табл. 7).


Для того чтобы отнестись к документу из набора избирательно, можно использовать свойство ActiveDocument объекта Application.

Следующий пример использует Activate-метод, чтобы инициировать документ, названный "Document 1." Пример также устанавливает горизонтальную ориентацию страницы и печатает документ.

Documents("Document 1").Activate

ActiveDocument.PageSetup.Orientation = wdOrientLandscape

ActiveDocument.PrintOut

Свойство Bookmarks возвращает набор Bookmarks, содержащий все закладки в документе.

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

With ActiveDocument.Bookmarks(1)

BookStart = .Start

Свойство Characters возвращает набор Characters, содержащий все символы в документе.

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

char = Selection.Characters(1).Text

MsgBox "первый символ - ... " & char

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

numchars = ActiveDocument.Sentences(1).Characters.Count

О событиях и методах объекта Document читайте в следующей статье.

Малышев С.А.

Эта книга поможет освоить интегрированную среду разработки VBA и научиться программировать в VBA с использование объектов, их свойств, методов и событий. Обсуждаемые приемы программирования иллюстрируются примерами, которые можно сразу же опробовать на практике. Полученные знания вы сможете применить как для настройки и усовершенствования популярный офисных приложений, включая приложения Office XP, так и для создания собственных приложений.

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

Книга:

Работа с текстом в Word VBA

Работа с текстом в Word VBA

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

У объектов Range и Selection достаточно много общего, но есть и несколько ключевых отличий. Оба объекта представляют непрерывные последовательности символов, над которыми вы сможете выполнять различные операции. Оба объекта имеют много общих свойств и методов. Однако некоторые свойства и методы уникальны для выделенных областей, а другие - для диапазонов. Значительные различия состоят и в том, что объект Selection соответствует выделению в области окна: тексту, графическому изображению или любому другому объекту, в то время как объекты Range существуют независимо от выделенной области и всегда содержат текст.

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

Несмотря на их различия, объекты Selection и Range можно создавать один из другого. Эта возможность оказывается чрезвычайно важной, так как многие функции редактирования работают только с диапазонами. В противоположность этому, единственный способ отобразить содержимое диапазона пользователю- выделить его. Используйте следующие простые приемы.

* Для выделения диапазона используется его метод Select. Например, для объекта RangeR команда имеет вид RangeR. Select.

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

Помните: если метод, относящийся к текстовым данным, вызывается для диапазона, а вы хотите применить его к выделенной области, просто включите в свой код инструкцию Selection . Range . ИмяМетода.

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

Метод Expand увеличивает существующий диапазон или выделенную область, добавляя блок текста в их конец. Блок может представлять собой символ, слово, абзац или что-нибудь другое. Вы можете добавить только один заранее определенный блок; кроме того, добавление подобных блоков в начале диапазона или выделенной области не допускается.

Для добавления к выделенной области слова, которое будет следовать сразу за ней, используйте такую инструкцию:

Selection.Expand(wdWord)

Вы можете использовать любую из следующих констант для расширения объекта; wdCharct er, wdWord, wdSent ence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow, wdTable и (только для объектов Selection) wdLine. По умолчанию используется константа wdWord.

Теперь нам следует остановиться на одном щекотливом моменте: объекты Selection (но не диапазоны) также содержат метод Expand. Этот метод включает соответствующее средство Word, которое позволяет расширять выделенную область при перемещении указателя мыши. Каждый раз, когда программа вызывает метод Extend, выделенная область увеличивается на блок текста, который следует сразу за точкой вставки: текущее слово, предложение, абзац, выделенный фрагмент пли целый документ. Если вы указали аргумент в виде одного символа, например, Selection.Expand ("С"). выделенная область будет расширена вплоть до первого встретившегося указанного символа.

Word VBA позволяет вам повторно определять начало и конец диапазона или выделенной области. Только имейте в виду, что методы, в имени которых присутствует слово Move, изменяют расположение диапазона или выделенной области: они не перемещают текст, который содержится в указанном объекте.

Метод Move изменяет диапазон или выделенную область, начиная с их сжатия, отмечая их расположение, а в них уже нет никакого текста. Расположение совпадает с началом исходного объекта. После этого метод Move перемещает "сжатый" объект в соответствии с вашими инструкциями. По окончании перемещения вы можете использовать методы Expand и Mover,nd для наполнения объекта текстом.

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

"Расширение диапазонов и выделенных областей" раньше в этой главе). Аргумент Count представляет собой целое положительное число, если вы хотите перемешать объект вперед по документу (т.е. к его концу), или отрицательное, если вы хотите перемещать объект назад по документу. В приведенном ниже примере аргументы не заключены в скобки, поскольку возвращенное методом значение (количество перемещенных элементов) здесь не используется:

oTheRange .Move Unit: = waParagraph, Count, : = -2

Методы MoveStart. и MoveEnd работают практически так же, как и метод Move, только они изменяют начальную или конечную точку диапазона или выделенной области соответственно. Приведенная ниже инструкция перемешает начало выделенной области на три слова ближе к концу документа:

Select-on.KoveStart Unit: = wdWord, Count:= 3

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

Еще одна пара методов, Start Of или EndOf, перемешает или расширяет начало или конец диапазона или выделенной области. Метод Start Of перемещает начало объекта обратно к началу текущего блока, в то время как метод EndOt перемешает конец объекта вперед к концу текущего блока.

Вы можете использовать аргумент Extend с любым методом для контроля над действиями Word. Если перемешаемая сторона объекта уже находится с того края, к которому вы пытаетесь ее переместить, ничею не происходит. Используйте константу wdMove для сжимания объекта или константу wdExtend для перемещения только указанной стороны. Ниже приведен соответствующий пример:

Selection. Start Of Unit:= wdSentence, Extend:= wdMove

Очень часто вам необходимо сжать диапазон или выделенную область в точку, которая не содержит никакого текста. С технической точки зрения свернутые диапазон или выделенная область - это такие диапазон или выделенная область, начальная и конечная точки которых совпадают. Сжатие подобных объектов оказывается важным в тех ситуациях, когда вам необходимо вставить поле, таблицу или другой элемент до или после выделенной области или диапазона, обойдясь без замены текста. (Вы можете вставить обычный текст, новые абзацы, а также некоторые другие элементы в "несжатые" диапазон или выделенную область).

Используйте метод Collapse для сжатия диапазона или выделенной области. Вы можете сжать объект к его начальной или конечной точке, используя необязательный аргумент Direction. Приведенная ниже инструкция сжимает выделенную область к ее начальной точке:

Selection.Collapse

А этот пример сжимает выделенную область к ее конечной точке:

Selection.Collapse(Direction:=wdCollapseEnd)

Если вы сожмете диапазон, который заканчивается знаком абзаца, к его конечной точке (используя константу wdCollapseEnd), Word разместит сжатый диапазон после знака абзаца (это означает, что сжатый диапазон будет находиться в следующем абзаце). Если же вы хотите разместить что-то перед знаком абзаца исходного диапазона, вы должны сначала переместить диапазон обратно с помощью метода MoveEnd, используя инструкцию, подобную этой:

Диапазон.MoveEnd Unit:= wdCharacter, Count:= -1

Удалить весь текст в диапазоне или выделенной области совсем несложно: просто используйте метод Delete соответствующего объекта. Вы можете использовать и метод Cut, если хотите удалить текст и поместить его в буфер обмена. Конечно же, метод Сору копирует текст в буфер обмена, не оказав влияния на текст в диапазоне или выделенной области.

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

Хотя использование буфера обмена для передачи текста из одного места в другое кажется вполне привычным, этот метод не всегда оказывается самым эффективным. Намного удобнее использовать свойства Text или FormattedText диапазона или выделенной области. Залайте эти свойства равными диапазону или выделенной области, содержащим текст, который вы хотите передать, и все. Объект назначения должен быть сжат до тех пор, пока передаваемый текст не должен будет заменить существующий текст в объекте.

Приведенный ниже фрагмент кода передает текст из выделенной области в сжатый диапазон, привязанный к закладке (операцию передачи проделывает четвертая строка кода). В новое место расположения попадает только сам текст; любое форматирование при этом теряется:

With ActiveDocument.Bookmarks("TheBookmark")

ActiveDocument.Range(Start:=.Start, End=.Start)

RangeY.Text = Selection.Text

Для передачи вместе с текстом и его форматирования просто замените свойство Text свойством FormattedText.

Простейшим для запоминания приемом добавления текста является задание свойства Text диапазона или выделенной области равным тексту, который вы решили вставить. Это проиллюстрировано на примере, показанном ниже:

Range2.Text = "Эй, эй! А ведь дома-то никого нет!"

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

Используйте методы Insert Before или Insert After объектов Range или Selection для вставки текста в определенном месте документа, не затрагивая при этом существующий текст. Эти методы позволяют вставить новый текст непосредственно перед или после указанного объекта соответственно. Word включает вставленный текст в выделенную область или диапазон.

При использовании любого из методов единственным аргументом является текст, который вы хотите вставить. Приведенный ниже фрагмент кода вставляет новый абзац, содержащий слова Dairy Entry в начало выделенной области (обратите внимание на использование такой константы VBA, как vbCr, для добавления знака абзаца). После этого в конец добавляется новый абзац, который начинается с текущей даты. Если вы выделили целый абзац до выполнения этого кода, абзац, содержащий текущую дату, появится после знака абзаца в выделенной области.

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

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

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

ActiveDocument.Paragraphs(1).Range.Text = «Oxo-xo!!»

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


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

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

Описание процедур

Private Sub CommandButton1_Click()
If Documents.Count = 0 Then Documents.Add
Selection.Text = "При прохождении тока напряжением в " + TextBox1.Text + "вольт попроводнику длиной " + TextBox4.Text + " метров, сечением " + TextBox3.Text + "кв. мм и удельным сопротивлением " + TextBox5.Text + " Ом*мм^2/м за " + TextBox2.Text + " секунд выделится " + TextBox6.Text + « джоулей теплоты»
Selection.Collapse direction:=wdCollapseEnd
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub TextBox1_Change()
scet
End Sub

Private Sub TextBox2_Change()
scet
End Sub

Private Sub TextBox3_Change()
scet
End Sub

Private Sub TextBox4_Change()
scet
End Sub

Private Sub TextBox5_Change()
scet
End Sub

Private Sub scet()
If IsNumeric(TextBox1.Text) = True And
IsNumeric(TextBox2.Text) = True And
IsNumeric(TextBox3.Text) = True And
IsNumeric(TextBox4.Text) = True And
IsNumeric(TextBox5.Text) = True And Not Val(TextBox4.Text) = 0 And Not Val(TextBox5.Text) = 0 Then rez = ((Val(TextBox1.Text) ^ 2) * Val(TextBox2.Text) * Val(TextBox3.Text)) / (Val(TextBox4.Text) * Val(TextBox5.Text))
TextBox6.Text = Str$(rez)
CommandButton1.Enabled = True
Else
TextBox6.Text = ""
CommandButton1.Enabled = False
End If
End Sub

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

определение цвета
Selection.Font.Color =
wdColorRed – красный
wdColorDarkRed – бордовый
wdColorDarkTeal – бирюзовый
wdColorBlue – синий
wdColorGreen – зеленый
wdColorBlack – черный
wdColorOrange – оранжевый

определение жирности
Selection.Font.Bold =
wdToggle – жирность

определение начертания
Selection.Font.Italic=
wdToggle – курсив

определение выравнивания
Selection.ParagraphFormat.Alignment=
wdAlignParagraphRight – выравнивание по правому краю
wdAlignParagraphCenter – выравнивание по центру
wdAlignParagraphJustify – выравнивание по левому краю

вставка в текст конкретного предложения
Selection.TypeText Text:="Пример работы с текстом"
вставка новой пустой строки
Selection.TypeParagraph
установка размера букв
Selection.Font.Size = 14

Одним из элементов оформления диалоговых окон является элемент управления Image (рисунок). Его основные свойства:

Autosize – изменяет размер рисунка на форме (автоматически или нет);

Picture – отображает графический файл, выводимый на форму;

pictureSizeMode – устанавливает масштабирование рисунка (не весь рисунок, вся поверхность объекта, целиком внутри объекта);

PictureAligment – устанавливает расположение рисунка внутри объекта (слева, справа, вверху, внизу);
pictureTilling – покрывает объект мозаикой из рисунка.

Данные свойства либо устанавливаются в окне свойств объекта, либо прописываются в листинге.

Примечание . При работе данного приложения все значения полей ввода должны быть числовыми. В VBA есть специальная функция для проверки того, является или нет введенная строка записью числа – IsNumeric. Для проверки отличия от нуля значений в последних двух полях ввода используется функция Val, которая переводит строковое выражение в числовое, если это строковое выражение содержит в своем начале цифры (или все состоит из них).

Функция Str делает преобразование, обратное тому, что производит Val, – конвертирует числовое значение выражения в строковое, что позволяет этому значению в дальнейшем обрабатываться как строке.

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

Создание кнопки или панели в Word

Назначить форме кнопку или пункт меню для непосредственного вызова приложения из Word нельзя – это можно сделать только для модулей. Поэтому нужно применить следующий способ. Создайте макрос (Меню + Insert + Module) в открытом проекте:

Sub counter()

userForm1. Show

End Sub

Переименуйте этот макрос по своему усмотрению, например Teplo. И выполните следующие действия:

1. Щелкните правой кнопкой мыши в любом месте панели инструментов.

2. В этом меню выберите команду Настройка (или Сервис + Настройка).

3. В диалоговом окне Настройка щелкните на ярлыке вкладки Команды .

4. Прокрутите список Категории вниз и найдите пункт Макросы . Выберите этот пункт. В списке «Сохранить в» выберите имя вашего документа, в котором создан макрос.

5. В правом окне найдите необходимый макрос (либо VBA-программу).

6. Перетащите имя этого макроса или программы на панель инструментов.

7. Создайте соответствующую надпись кнопки и, если нужно, рисунок (при помощи правой кнопки мыши).

8. Закройте диалоговое окно Настройка, чтобы завершить работу.

9. В результате будет создана кнопка запуска приложения.


Лабораторная работа №5


Похожая информация.


На странице документа Word можно организовать работу с доста- точно сложной программой, даже не создавая для этого отдельных Win- dows-форм, запускающихся, например, при открытии документа или при нажатии на кнопку на странице документа, а просто разместив на нем поля ввода данных и показывая программно на той же странице результаты по- сле изменения данных.

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

Некоторые принципы работы с объектами Word можно освоить, если записать некоторую последовательность своих действий с помощью сред- ства Word Запись макроса, которое присутствует на вкладке ленты Разра- ботчик. Данная вкладка присутствует, если в Параметрах Word на стра- нице Основные стоит галочка у пункта Показывать вкладку Разработчик на ленте.

Выполним следующие действия:

1) нажмем на кнопку Запись макроса, ни кнопку, ни клавиши макросу можно не назначать, зададим, где будет сохраняться текст макроса: Макрос доступен для текущего документа;

2) переместимся в конец документа с текущей позиции (была не в конце), нажав клавиши Ctrl+End;

3) нажмем клавишу Enter и напишем слово «Привет!»;

4) еще раз повторим операцию пункта 3;

5) выделим последнее слово, нажав Shift+Home и нажмем клавишу Delete;

6) перейдем в начало первой строки «Привет!», нажмем Shift+End и затем клавишу Delete;

7) на вкладке Разработчик сначала нажмем кнопку Остановить запись, затем кнопку Visual Basic;

8) в открывшемся окне редактора Visual Basic слева на панели Project сделаем двойной щелчок мышкой на разделе Progect() - Modules - NewMacros и увидим справа окно с текстом программы на языке VBA, которое показано на рисунке 5.43.

При сохранении документа, в котором присутствуют программные модули, в системе Microsoft Office 2007 следует выбрать тип файла Доку- мент Word с поддержкой макросов, иначе текст программ не будет сохра- нен.

В тексте макроса на рисунке 5.43 Selection - один из основных объ- ектов, которые содержит главный объект Application - приложение Word.

Рисунок 5.43. Текст макроса на языке VBA


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

Всплывающий список свойств и методов можно получить также, на- жав комбинацию клавиш Ctrl+пробел.


Кроме того, при написании текста программы для стандартный про- цедур и функций появляются всплывающие подсказки по их синтаксису (см. рисунок 5.45).

МsgВоА(Рrотрt [ШстеЛз VbМsgВохStуlе = vbОКОпlу], автора Фултон Хэл

Глава 18. Сетевое программирование Если торговец в разговоре с вами произносит слово «сеть», скорее всего, он желает всучить свою визитную карточку. Но в устах программиста это слово обозначает электронное взаимодействие физически удаленных машин - неважно, находятся

Из книги VBA для чайников автора Каммингс Стив

Глава 16. VBA-программирование в Excel. В этой главе...~ Что такое объектная модель Excel~ Управление ячейками с использованием объектов диапазонов~ Создание собственных функций для использования в формулах рабочих листов~ Использование встроенных функций Excel в VBA-коле~ Работа с

Из книги Программирование КПК и смартфонов на.NET Compact Framework автора Климов Александр П.

Глава 17. Программирование баз данных. В этой главе...~ Знакомство с терминологией~ Написание кода баз данных с помощью объектов данных ActiveX~ Программирование с помощью DAO~ Ускорение с помощью SQLНесмотря на то, что Access - официальное приложение для работы с базами данных,

Из книги С компьютером на ты. Самое необходимое автора Егоров А. А.

Глава 9 Программирование для смартфонов Особенности программирования для смартфонов В этой главе мы научимся создавать приложения для смартфонов под управлением системы Windows Mobile 5.0. Так получилось, что в России смартфоны под управлением Smartphone 2003 поначалу не получили

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

Глава 4 Microsoft Word 4.1. Возможности Microsoft Word Microsoft Word - один из самых лучших и мощных текстовых редакторов на сегодняшний день. Word, в отличие от Блокнота и WordPad, не входит в состав Windows, а распространяется в составе программного пакета Microsoft Office. Программа обладает огромным

Из книги Компьютер для бухгалтера автора Филатова Виолетта

Глава 28 Программирование ядра Из главы 7 вы узнали, что драйверы устройств в Linux выполнены в виде модулей ядра, и познакомились с пакетом module-init-tools (он же modutils для ядер 2.4), содержащим утилиты для выполнения основных операций над модулями ядра. В этой главе я покажу, как

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Глава 6 Работа с программой Word Обычно работа с редактором Word не вызывает трудностей: текст набирается в нем так же, как и в редакторе Блокнот. Трудности начинаются тогда, когда приходится вносить в созданный документ исправления и добавления. К удивлению пользователя,

Из книги Access 2002: Самоучитель автора Дубнов Павел Юрьевич

ГЛАВА 27. Программирование с транзакциями. Транзакция является начальной точкой для всех взаимодействий клиентского приложения с сервером. В этой главе мы с точки зрения различных интерфейсов клиента рассмотрим запуск, управление и завершение транзакций.Многие языки и

Из книги Офисный компьютер для женщин автора Пастернак Евгения

Глава 11 Программирование на языке SQL Как уже говорилось в главе 9, главной «специальностью» языка SQL является конструирование запросов пользователя к базе данных. Поэтому программирование на языке SQL – это в основном формирование таких

Из книги Компьютер – это просто! автора Алиев Валерий

Глава 1 Текстовый редактор Microsoft Word

Из книги автора

Глава 3 Microsoft Word, или Как печатать на компьютере Для чего нужен текстовый процессор? Начало работы Настройки Microsoft Word Панели инструментов Создание документа Форматирование документа Выделение Редактирование документа Таблицы и границы WordArt.