Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Работа с объектом Document , его свойства и методы




Объект Word.Document, программная работа со свойствами и методами документа в VBA

После того, как мы при помощи объекта Application запустили Word, при помощи коллекции Documents создали (или открыли, или нашли среди уже открытых) — в общем, получили ссылку на нужный нам документ, можно выполнять с этим документом различные действия, реализованные при помощи свойств, методов и событий объекта Document. У этого объекта десятки свойств и методов, и здесь мы рассмотрим только наиболее важные и часто используемые из них. Для самостоятельного рассмотрения будут оставлены очевидные и редкоиспользуемые свойства.

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

· работать с документом как с элементов коллекции Documents. Формате обращения может выглядеть, например, так: Documents.Item(1);

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

MsgBox ThisDocument.Name

· использовать свойство объекта Application ActiveDocument. Это свойство возвращает нам объект активного документа:

MsgBox Application.ActiveDocument.Name

или просто

MsgBox ActiveDocument.Name

Самые важные свойства объекта Document представлены ниже:

· ActiveWritingStyle — текущий активный стиль (заголовок определенного уровня, обычный текст, гиперссылка и т.п.). Рекомендуется проверить перед вводом текста.

· AttachedTemplate — возможность подключить шаблон (со всеми макросами, стилями, записями автотекста и т.п.) или проверить, какой шаблон подключен (вручную это можно сделать через меню Сервис -> Шаблоны и надстройки).

· Background — возвращает объект Shape, представляющий фоновый рисунок (фоновые рисунки видны только в режиме Web-документ);

· BuiltInDocumentProperties — возможность получить ссылку на коллекцию DocumentProperties с одноименными объектами, представляющими встроенные свойства документа (название, автор, категория, комментарии и т.п.);

· Characters — возвращает коллекцию объектов Range, каждый из которых представляет один символ. Это свойство есть не только у объектов Document, но и у объектов Selection и Range. Может использоваться, например, для выполнения операция поиска и замены или статистических подсчетов (например, для если переводчику платят за количество символов);

· Content — свойство, возвращающее объект Range, представляющий главную цепочку документа (main document story). Если говорить проще — просто текст документа, без колонтитулов, сносок, комментариев и т.п.

· CustomDocumentsProperty — свойство, возвращающее коллекцию объектов DocumentProperties, представляющих пользовательские свойства документа. Можно использовать для сохранения вместе с документом любых значений переменных. Очень удобно, например, для подсчета количества открытий документов, флажков печатался/не печатался, сколько раз вызывалась та или иная функция, на каких компьютерах и каким пользователем открывался и т.п.

· DefaultTabStop — определить отступ по умолчанию при использовании символа табуляции. По умолчанию — 35 пунктов, что примерно равно 1,25 см;

· DisableFeatures — отключить возможности, которые понимают только последние версии Word (для совместимости с пользователями, у которых на компьютерах стоят старые версии). Обычно само свойство DisableFeatures просто включает этот режим, а конкретный уровень совместимости задается при помощи свойства DisableFeaturesIntroducedAfter.

· DoNotEmbedSystemFonts — не вставлять в документ системные шрифты (по умолчанию для русского, японского и т.п. вставляются). Позволяет сократить размер документа — но тогда пользователи в системе, где не стоит русский язык, не смогут прочесть этот документ.

· EmbedTrueTypeFonts — очень полезное свойство, если вы работаете с документом в месте, где используются экзотические шрифты (например, в издательстве). Вставка true-type шрифтов гарантирует, что получатели документа будут видеть его точно таким же, как и создатель.

· Envelope — позволяет получить ссылку на специальный объект Envelope, который используется для создания почтовых конвертов.

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

· Footnotes — возможность получить коллекцию сносок.

· свойства Formatting… — что показывать в списке стилей в панели инструментов Форматирование.

· FormFields — аналогично Fields, но в этом случае мы получаем ссылку на поля в формах.

· FulName — полное имя объекта (вместе с путем к нему в файловой системе или Web). Доступно, конечно, только для чтения.

· GrammarChecked — пометить весь документ, как проверенный с точки зрения грамматики (фактически отключить проверку грамматики для данного документа). Такое же свойство существует и у объекта Range. Коллекцию ошибок, выловленных при проверке грамматики, можно получить при помощи свойства GrammaticalErrors, а выделить ошибки зеленым волнистым подчеркиванием (если они еще не выделены) — при помощи свойства ShowGrammaticalErrors. Для орфографических ошибок существует аналогичные свойства SpellingChecked, SpellingErrors и ShowSpellingErrors.

· HasPassword — проверить, назначен ли пароль для указанного документа. Password — назначить пароль. По причине крайней слабости парольной защиты пароли в Word, Excel и Access использовать не рекомендуется.

· Indexes — возвращает коллекцию индексов (то есть предметных указателей) для документа.

· Name — возвращает имя документа (без пути к нему).

· OpenEncoding — возвращает кодовую страницу, которая использовалась для открытия документа. Для русского языка по умолчанию, конечно, 1251.

· PageSetup — позволяет получить ссылку на одноименный объект. Используется, конечно, в основном при реализации печати.

· Paragraphs — возвращает ссылку на коллекцию абзацев в данном документе.

· Path — возвращает путь к документу в файловой системе (без имени). Может пригодиться, чтобы создать еще один файл по тому же пути.

· Permission — возможность получить доступ к объекту Permission, который позволяет управлять системой внутренних разрешений документа Word (не разрешений файловой системы).

· PrintRevisions — печатать или нет пометки редактора (исправления) вместе с документом. По умолчанию — печатать.

· ProtectionType — проверить защиту данного документа (разрешено все, или только комментарии, чтение, изменения в полях форм и т.п.). Сама защита устанавливается при помощи метода Protec()t.

· ReadOnly — здесь объяснений не требуется. Это свойство доступно только на чтение (поскольку соответствующий атрибут устанавливается в файловой системе).

· RemoveDateAndTime и RemovePersonalInformation — удалить информацию о дате и времени произведенных изменений и всю информацию о пользователе из документа (включая свойства документа). Может быть полезным при создании файла-образца.

· Saved — очень важное свойство. Позволяет определить, изменялся ли документ со времени последнего изменения.

· SaveEncoding — позволяет явно указать (или получить) кодировку, которая будет использоваться при сохранении документа.

· SaveFormat — позволяет получить информацию о формате документа (DOC, RTF, TXT, HTML и т.п.). Доступно только для чтения.

· Sections — возвращает коллекцию разделов документа. Sentences — то же самое для предложений. Аналогично работают свойства Shapes, Styles, Subdocuments, Tables, Windows и Words.

· Type — возвращает тип документа (обычный, шаблон или Web-страница с фреймами).

· Variables — еще одно очень удобное свойство. Можно использовать для сохранения своих служебных данных вместе с документом, как и пользовательские атрибуты (custom attributes), но в отличие от пользовательских атрибутов документа, пользователям эти свойства не видны.

Теперь — о самых важных методах объекта Document:

· Activate() — этот метод позволяет сделать указанный вами документ активным (например, для ввода текста).

· AddToFavorities() — добавить ссылку на документ в каталог "Избранное". Может быть полезным, если пользователь будет работать с ним постоянно.

· CheckSpelling() и CheckGrammar() — запустить проверку орфографии и грамматики соответственно.

· Close() — закрыть документ. Можно закрыть с сохранением (по умолчанию), а можно — без (если указать соответствующий параметр).

· Compare() — сравнить документ с другим и сгенерировать редакторские пометки в местах, где обнаружены различия.

· DataForm() — возможность редактирования форм данных — то есть данных, которые в документе разделены разделителями полей и строк. Вообще говоря, формы данных в Word рекомендуется использовать только в случае крайней необходимости — гораздо больше дл работы с упорядоченными данными приспособлены Excel и Access.

· DetectLanguage() — определить язык текста. Проверка производится по предложениям, на основе сверки слов в них со встроенными словарями. Такая проверка производится автоматически во время ввода текста или открытия нового документа. Чтобы заново провести проверку языков, свойство LanguageDetected нужно перевести в False.

· FitToPages() — очень интересный метод. Размер шрифта автоматически меняется таким образом, чтобы текст стал занимать на одну страницу меньше. Можно использовать для устранения "висячих страниц" и других проблем верстки.

· FollowHyperlink() — открыть указанный вами документ в соответствующем приложений (если HTML, то в Internet Explorer).

· GoTo() — очень мощный метод, существует для объектов Document, Range и Selection. В первых двух случаях он возвращает объект Range, в третьем — просто перемещает указатель ввода текста на нужное место. Умеет переходить на начало страницы, строки, закладки, комментария, таблицы, секции, поля, ссылки, формулы и т.п. Может на определенный номер этого объекта, первый, последний, следующий и т.п. Очень удобно использовать для установки указателя в нужное место для автоматического ввода текста.

· Merge() — возможность произвести слияние двух документов. Метод очень сложный и мощный, основывается на применении редакторских пометок.

· PresentIt() — открывает данный документ Word в PowerPoint.

· PrintOut() — очень сложный метод, который позволяет вывести на печать весь документ или его часть. Принимает два десятка параметров (все — необязательные). Может использоваться для объектов Application, Document и Window.

· PrintPreview() — перевести документ в режим предпросмотра.

· Protect() — возможность ограничить внесения изменений в документ при помощи пароля или IRM.

· Range() — очень важный метод. Возвращает объект Range (он будет рассмотрен ниже), принимает в качестве параметров номер начального символа диапазона и номер конечного символа.

· Redo() — повторить последнее действие. В качестве параметра принимает количество последних действий, возвращает True, если повтор был произведен успешно.

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

· Save() — смысл этого метода очевиден. Если документ еще не сохранялся, открывается диалоговое окно Save As.

· SaveAs() — очень мощный и сложный метод. Можно определить путь для сохраняемого документа, его формат, кодировку, пароли на открытие и изменение документа, вставку шрифтов и многое другое. Очень полезный метод, например, для автоматической конвертации документов.

· Select() — позволяет просто выделить весь документ. Этот метод существует для очень большого количества объектов, в том числе Selection и Range.

· TransformDocument() — исключительно мощный метод, но только для программистов, которые хорошо разбираются в XML и XSLT. Позволяет применить к документу таблицу преобразований стилей (Extensible Stylesheet Language Transformation, XSLT), при помощи которой можно поменять все, что угодно.

· Undo() — отменить определенное количество последних действий. По синтаксису и принципам работы — полный аналог Redo().

· UndoClear() — очистить буфер отмены изменений, чтобы пользователь не смог откатить произведенные действия.

· UnProtect() — снять защиту с документа (определенную методом Protect() или на графическом интерфейсе). Может быть очень полезным перед программным внесением изменений в защищенный документ.

Часто используемых событий у объекта Document всего три — New() (можно определить только для шаблона, срабатывает, когда на основе этого шаблона создается новый документ), Open() и Close(). Все эти свойства очевидны и изначально доступны в окне редактора кода Visual Basic.

10.5 Объекты Selection, Range и Bookmark

10.5.1 Работа с объектом Selection

Объект Word.Selection, работа с выделенным участком текста, преимущества и недостатки

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

Первый объект, который мы рассмотрим — это объект Selection. Что это такое?

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

Создавать объект Selection и получать на него ссылку в переменную не обязательно (а обычно и просто невозможно). Дело в том, что объект Selection в документе может быть только один. Он создается автоматически при запуске Word и всегда доступен. Обращаться к нему можно так:

Application.Selection.Text = "Вставляемый текст"

или просто

Selection.Text = "Вставляемый текст"

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

Как настроить выделение в документе Word:

· самый простой способ — просто положиться на выделение нужного текста пользователем. Обычно такой способ применяется для сложного редактирования/форматирования участков текста и для ввода информации в указанное пользователем место документа, когда в автоматическом режиме нужное место не найти;

· воспользоваться методом Select(), который предусмотрен для огромного числа объектов (Document, Range, Bookmark, Table со всеми подобъектами типа столбцов и строк, PageNumber, Field и т.п.). Этот метод просто выделяет весь документ, закладку, таблицу и т.п.

· воспользоваться многочисленными методами объекта Selection, чтобы преобразовать уже существующее выделение;

· воспользоваться объектом Find для поиска нужного участка текста. Подробнее об этом объекте — в специальном разделе.

· если вам нужно вводить информацию в самое начало документа, можно вообще ничего не делать. По умолчанию указатель вставки устанавливается на начало документа. Только не забудьте сделать этот документ активным.

Если вы полагаетесь на выделение нужного места пользователем, то помните, что пользователь может ухитриться выделить одновременно несмежные участки текста (при помощи клавиши <Ctrl>), или выделить не текст, а часть таблицы, рисунок или другой нестандартный объект в документе. Чаще всего поведение программы, работающей с объектом Selection, в этом случае становится совершенно непредсказуемым, поэтому рекомендуется всегда использовать дополнительные проверки при помощи свойств Type и Information объекта Selection.

Несмотря на то, что применение объекта Selection — самый простой и наглядный метод редактирования текста, и чаще всего именно он используется макрорекордером, на практике программисты используют его редко. Объясняется это очень просто: при использовании этого объекта мы слишком зависим от действий пользователя. Если во время выполнения нашего кода пользователь проявит инициативу и начнет щелкать по документу мышью, результат может быть совершенно непредсказуемым. Защититься от вмешательства пользователя можно двумя способами:

· работать со скрытым (то есть невидимым) документом или, возможно, со скрытым экземпляром Word. Для включения/отключения невидимости можно использовать свойство Visible для объектов Document и Application;

· более удобный способ — вместо объекта Selection использовать объекты Range и Bookmark, о которых будет рассказано в следующих разделах.

10.5.2 Свойства и методы объекта Selection

Свойства и методы объекта Word.Selection, программная работа с выделенным участком текста в VBA

Вначале — о самых часто используемых свойствах объекта Selection:

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

· Start и End — свойства, которые определяют номер первого и последнего символа в выделении (по отношению к document story — то есть текста документа, или другого story — например, сносок). Первая позиция в document story — всегда 0. если вы создаете документ из неизменяемого шаблона, вполне можно использовать эти свойства, чтобы найти нужное место в документе для ввода текста (однако этот способ не очень рекомендуется — по причине того, что при правке шаблона вам придется править много программного кода).

· ExtendMode — переключиться в режим выделения текста, когда нажатие клавиш со стрелками, <Home> и <End> приводит не к перемещению указателя ввода, а к изменению выделения.

· Find — очень важное свойство, которое возвращает объект Find. Подробнее про этот объект и про его вложенный объект Replace будет рассказано в разделе, посвященном поиску и замене текста.

· Flags — свойство, которое позволяет проверить или изменить некоторые моменты, связанные с выделением: является ли оно активным, находится ли в конце строки и т.п. Регулирует пять параметров одновременно при помощи битовой маски.

· Font — возвращает объект Font, при помощи которого можно управлять оформлением текста в выделении. Доступны все возможности, которые есть на графическом интерфейсе в меню Формат -> Шрифт. Например, чтобы назначить выделенному тексту шрифт Arial размера 10, можно использовать код

Selection.Font.Name = "Arial"

Selection.Font.Size = 10

· Information — важнейшее свойство объекта Selection для целей проверок. Возвращает огромное количество информации о выделении (в какой части документа, внутри таблицы или нет, включены ли клавиши <CapsLock> и <NumLock>, включен ли режим "Замена" при вводе текста, на какой странице находится выделение и сколько всего страниц и т.п.).

· IPAtEndOfLine — возвращает True, если курсор ввода текста (insertion point — IP) находится в конце строки (крайнем правом положении при выравнивании).

· LanguageId — возможность пометить выделение, как написанное на определенном языке. Правильное определение языка позволяет избежать проблем при проверке орфографии.

· NoProofing — возможность отменить для выделения проверку орфографии и грамматики. Очень рекомендуется помечать таким образом текст с программным кодом, списками фамилий, названий фирм, специфическими терминами и т.п.

· Range — возможность создать из выделения объект Range.

· StoryType — еще одно свойство для проверок. Определяет тип document story, в котором находится выделение.

· Text — самое важное свойство объекта Selection. Позволяет ввести текст на месте выделения (или в месте, где стоит указатель). Например, чтобы 100 раз напечатать текст "Привет!", можно воспользоваться кодом:

For i = 0 To 100

Selection.Text = "Привет!"

Selection.EndOf

Next

Метод EndOf() здесь для того, чтобы не перезаписывать один и тот же текст 100 раз, поскольку после ввода текст остается выделенным.

· Type — еще одно проверочное свойство, которое позволяет предупредить ошибку, если пользователь выделил что-то неположенное. Например, при обычном выделении значение этого свойства будет равно 1, а если выделены несмежные участки текста — 2.

· Words — аналогично такому же свойству Document.

Методов у объекта Selection гораздо больше, чем свойств:

· Calculate() — возможность посчитать математическое выражение прямо в процессе ввода текста и вернуть его результат (только используя тип данных Single).

· ClearFormatting() — очистить форматирование (и на уровне текста, и на уровне параграфа). Свойство можно применять не только для объекта Selection, но и для объектов Find и Replace.

· Collapse() — превратить выделение в точку вставки. Можно использовать два варианта: точка вставки на начало выделения и на конец выделения. Очень удобно, если вам требуется только вставить новый текст без удаления старого.

· Copy(), CopyAsPicture(), Cut(), Paste() и Delete() — комментировать эти методы, видимо, необходимости нет.

· EndKey() — этот метод так называется, поскольку он очень похож по функциональности на нажатие клавиши <End>. Он позволяет (в зависимости от переданных параметров) перейти на конец DocumentStory, строки, столбца или записи в таблице (по умолчанию — на конец строки) и либо выделить до этого момента, либо установить на нем точку вставки. Чтобы вставить перевести курсор вставки на конец текста документа, можно воспользоваться командой

Selection.EndKey Unit:=wdStory, Extend:=wdMove

Если же нужно перейти на начало элемента, используется аналогичный метод HomeKey().

· EndOf() — в том же режиме, что и EndKey(), перейти на конец символа, слова, предложения, абзаца, секции, текста документа, таблицы и т.п. Чтобы перейти на начало, существует метод StartOf().

· Expand() — расширить выделение на слово, предложение, абзац и т.п. — в зависимости от переданного параметра. Метод Extend() позволяет расширить выделение (вместо слова — предложение, вместо предложения — абзац и т.п.). Метод, обратный методу Expand()Shrink().

· GoTo() — работает практически аналогично такому же метода объекта Document.

· GotoNext() — перейти на следующую строку, страницу, закладку и т.п. Аналогично работает метод GotoPrevious() (переход на предыдущий элемент).

· назначение многочисленных методов Insert() очевидно. Чаще всего используются методы InsertBefore() (вставить перед выделением) и InsertAfter() (вставить после выделения).

· методы Move() также встречаются едва ли не в любой программе, связанной с вводом текста в Word. Самые важные и удобные из этих методов:

· MoveLeft(), MoveRight(), MoveUp(), MoveDown(), MoveEnd(), MoveStart() — назначение этих методов очевидно. Каждый из них принимает дополнительные параметры, при помощи которых можно определить, на сколько позиций будет перемещаться указатель, будет ли двигаться выделение, распространяясь на новую область и т.п.

· MoveStartUntil(), MoveStartWhile(), MoveEndUntil(), MoveStartWhile() отличаются тем, что курсор вставки перемещается не на определенное количество символов, а пока не будет найдено (или пока встречается) определенная последовательность символов. Также очень удобно для установки курсора в нужное место в документе для ввода текста.

· метод Move() — более гибкий. Он позволяет отсчитывать не только определенное количество символов, но и слов, предложений, абзацев, разделов, столбцов и строк в таблице и т.п. Позволяет обойтись минимальным количеством изменений в коде, если изменился исходный шаблон для ввода данных.

· Next() — перейти вперед на определенное количество символов, слов, предложений, абзацев, разделов, столбцов и строк в таблице и т.п. Перейти назад позволяет метод Previous().

· NextField() — перейти на следующее поле в форме (или проверить, не кончились ли поля (в этом случае этот метод вместо объекта Field возвратит Nothing). Есть также метод PreviousField().

· SelectColumn(), SelectRow(), SelectCell() — очень удобные методы для выполнения различных операций в таблице Word.

· SelectCurrent… Alignment(), Font(), Indent(), Color() и т.п. — выделить текст до изменения выравнивания, шрифта, отступа, цвета и т.п. Также очень удобно для целей форматирования или для выделения специальным образом добавленного текста.

· SetRange() — самый простой способ настроить выделение. Передаются номер первого и последнего символа того участка текста, который нужно выделить. Нумерация начинается с 0, скрытые служебные символы также считаются. Такой же метод существует для объекта Range.

· Sort(), SortAscending(), SortDescending() — возможность расставить по алфавиту, датам и т.п. абзацы или столбцы в таблице (которые входят в выделение). Этот метод сможет сэкономить вам множество времени и сил.

· ToggleCharacterCode() — позволяет ввести код служебного символа и тут же преобразовать его в символ Unicode. Например, чтобы ввести символ Евро, можно воспользоваться командами

Selection.TypeText Text:="20ac"

Selection.ToggleCharacterCode

· TypeText() — самый простой, надежный и часто используемый метод ввода текста. Принимает единственный параметр — текст, который нужно ввести. Будет ли перезаписан текущий текст выделения, зависит от свойства ReplaceSelection объекта Options.

· WholeStory() — выделить текущую часть документа (document story). Обычно используется, чтобы выделить текст документа без сносок, редакторской правки, колонтитулов и т.п.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных