Главная

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

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

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

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

ТОР 5 статей:

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

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

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

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

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

КАТЕГОРИИ:






При помощи метода KeyBindings.Add() добавляем новое назначение, при этом определяем все необходимые параметры.




Например, чтобы по нажатию клавиш <Alt>+<D> у нас запускался макрос DataLoad() во всех документах, можно выполнить следующий код:

CustomizationContext = NormalTemplate

Application.KeyBindings.Add wdKeyCategoryMacro, "Normal.NewMacros.DataLoad", _

BuildKeyCode(wdKeyAlt, wdKeyD)

· Language — еще одно свойство, которое позволяет определить, стоит ли на компьютере пользователя локализованная версия Word (точнее, определяется язык пользовательского интерфейса). Для русского языка будет возвращаться значение 1049, для английского — 1033. Более подробную информацию (о языке помощи, языке программы установки и т.п.) можно получить при помощи свойства LanguageSettings.

· MacroContainer — очень полезное свойство для программистов. Позволяет в ходе выполнения определить, откуда был запущен текущий программный код (обычно проверяются два варианта — normal.dot или обычный текущий документ).

· NewDocument — одна из возможностей создать новый документ Word. Возвращает объект NewDocument. Для создания нового документа используется метод Application.NewDocument.Add().

· NormalTemplate — свойство очень важное! Позволяет получить ссылку на объект Template, представляющий normal.dot — для внесения в него изменений.

· Option — возвращает объект Option с огромным количеством свойств. Через этот объект программным способом можно настроить значения со всех вкладок, доступных на графическом экране через меню Сервис -> Параметры.

· Path — возвращает путь к программным файлам Word на диске.

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

· ScreenUpdating — свойство, которое позволяет запретить перерисовку экрана (если установить его значение в false). Обычно используется для ускорения работы процедур, которые выводят что-то на экран.

· Selection — еще одно важнейшее свойство. Возвращает объект Selection — упрощенно говоря, место, в котором находится указатель вставки. Подробнее о нем — в следующих разделах.

· ShowStartupDialog — показывать ли нет Task Pane при запуске Word. Чаще всего используется для отключения показа. Есть еще несколько свойств Show…, значения которых очевидны.

· SpecialMode — проверить, не находится ли Word в специальном режиме копирования и вставки (для перехода в этот режим нужно выделить текст и нажать <F2> или <Shift>+<F2>), а потом переместить курсор и нажать <Enter>).

· StartUpPath — возможность просмотреть/определить путь к каталогу автозапуска. Те шаблоны и встраиваемые приложения, которые находятся в этом каталоге, Word при запуске открывает автоматически. По умолчанию каталог автозапуске находится в профиле пользователя. Путь к нему выглядит как application data\microsoft\word\startup.

· StatusBar — еще одно очень полезное свойство. Позволяет вывести текст в Status Bar — строке состояния, то есть строке в нижней части окна приложения, в которой выводится информация о страницах, столбцах, языке, режимах работы и т.п.

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

· Tasks — возвращает одноименную коллекцию Tasks с объектами Task, представляющими все работающие в системе процессы. При помощи этих объектов можно программным способом найти работающее в системе приложение и что-нибудь с ним сделать (сделать видимым или невидимым, активизировать, закрыть, передать в его окно сообщение Windows — как при работе с Windows API и т.п.), Опытные разработчики активно используют этот набор объектов для работы с внешними приложениями. Запускать внешние приложения лучше всего при помощи специального объекта Shell, о котором будет рассказано ниже.

· UserControl — очень важное свойство (оно есть и в Excel). Это свойство позволяет определить как именно был запущен Word — пользователем вручную или программным образом. На основе этого можно, например, сделать вывод, нужно ли его программным образом закрывать.

· UserInitials и UserName — возможность получить или определить информацию об инициалах или имени пользователя. Инициалы используются в исправлениях, а имя пользователя — в свойствах документа.

· VBE — это свойство возвращает недокументированный, но очень интересный объект VBE, представляющий редактор Visual Basic.

· Version — свойство возвращает версию Word (менее подробную, чем Build). Для Word 2003 значение этого свойства — 11.0).

· Visible — позволяет спрятать окно Microsoft Word. Word убирается очень качественно — он исчезает и из рабочего стола, и из панели задач.

· Windows — возвращает информацию об одноименной коллекции Windows, представляющей объекты окон документов Word. Эта коллекция также используется очень часто.

· WindowsState — позволяет свернуть/развернуть/восстановить окно Word.

Самые важные методы объекта Application:

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

· BuildKeyCode() — позволяет узнать уникальный номер для клавиатурной комбинации в Word. Пример применения этого метода приведен чуть выше при рассмотрении свойства Application.KeyBindings.

· ChangeFileOpenDirectory() — этот метод позволяет изменить каталог, который по умолчанию открывает Word для работы с документами (по умолчанию, конечно, "Мои документы";

· CheckGrammar() и CheckSpelling() — позволяет проверить грамматику и орфографию для передаваемых символьных значений. Чаще используются аналогичные методы для объектов Document и Range.

· CleanString() — очень полезный метод. Позволяет "чистить" передаваемое символьное значение (полученное, например, от объектов Selection или Range) от специальных символов Word и превращать их в обычный текст — как будто он был набран в Блокноте.

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

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

RecentFiles(1).Open

Application.GoBack

Метод GoForward() обеспечивает переход вперед по точкам сохранения.

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

Application.Keyboard 1049

а на английский -

Application.Keyboard 1033

Если этому методу ничего не передавать, он вернет текущую раскладку клавиатуры.

· KeyString() — метод, обратный BuildKeyCode. Тот метод возвращал уникальный идентификатор клавиатурной комбинации, а этот — возвращает клавиатурную комбинацию для данного уникального идентификатора;

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

· OnTime() — очень интересный метод. Он позволяет выполнить макрос Word либо в указанное вами время, либо по прошествии какого-то времени. В Word одновременно может работать только один таймер. При помощи этого метода можно выполнять ресурсоемкие операции в автоматическом режиме.

· OrganizerCopy() — еще один полезный метод. Позволяет скопировать макрос, панель инструментов, запись автотекста или стиль между документами. Для объекта Application предусмотрены также методы с самообъясняющими OrganizerDelete() и OrganizerRename().

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

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

· Repeat() — просто повторить последнюю выполненную команду указанное вами количество раз.

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

· Run() — еще один очень важный метод. Позволяет запустить процедуру/макрос из открытого шаблона/документа и передать ей параметры.

· ScreenRefresh() — обновить окно приложения. Обычно используется после того, как автоматическое обновление было отключено при помощи свойства ScreenUpdating.

· ShowClipboard() — показать панель буфера обмена Word (если вы работаете с несколькими буферами).

Остальные методы относятся к работе протокола DDE, преобразованию различных единиц измерений и т.п.

У объекта Application множество событий — открытие/закрытие/сохранение/печать документа, щелчки мышью, активизация, выход из приложения и т.п. Назначение событий понятно из их названий, поэтому они здесь рассматриваться не будут. Единственное, что следует еще раз отметить — события объекта Application по умолчанию не показываются в редакторе Visual Basic. Чтобы они появились, в раздел Declarations нужно поместить следующую строку:

Public WithEvents App As Word.Application

В этом случае в списке объектов в окне редактора кода для форм появится объект App со всеми необходимыми событиями.

10.4 Коллекция Documents и объекты Document

10.4.1 Как работать с коллекцией Documents

Коллекция Documents, объект Word.Document, создание документов средства VBA из шаблонов, преобразование типов документов

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

Чаще всего в программах нам нужно:

· Запустить Word;

· Создать или открыть документ;

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

Запуск Word производится при помощи объекта Application, с которым мы уже знакомы. Для выполнения различных действий с документом используются объекты Selection, Range и Bookmark, которые будут рассмотрены ниже. А вот второй пункт — создание документа, открытие документа, проверка, открыт уже документ или нет, сохранение документа и т.п. реализуется при помощи коллекции Documents и объекта Document.

Самый простой вариант создания документа выглядит так:

Dim oDoc As Word.Document

Set oDoc = Application.Documents.Add()

При этом мы создали обычный пустой документ (на основе шаблона normal.dot) и получили на него ссылку в объектную переменную oDoc. Далее в документ можно программно вводить нужную нам информацию.

Однако создавать пустой документ и программно формировать все его содержимое удобно только тогда, когда документ очень простой. Попробуйте программно создать какой-нибудь документ посложнее, например, объявление на взнос наличными или большой договор. Возможно, у вас это получится, но работы потребуется очень много. Намного проще набрать и оформить сложные документы обычным способом — как простой документ Word и оставить в нем пустые места для заполнения из программы. Проще всего сделать это при помощи шаблона Word.

Например, в нашей ситуации нам вначале нужно набрать текст договора, оставив пустые места для изменяемых данных) и сохранить его с расширением.dot (предположим, что он сохранен на диске C:\ с именем dog_blank.dot). Тогда создать документ на основе этого шаблона можно так:

Dim oDoc As Word.Document

Set oDoc = Application.Documents.Add("C:\dog_blank.dot")

А далее при помощи объектов Bookmark и Range (о них — в следующих разделах) вводим текст в оставленные пустые места.

Немного про то, где можно хранить шаблоны документов:

· первый вариант — просто в файле на диске локального компьютера пользователя. Это — самый простой вариант, но у него есть недостатки: во-первых, пользователь может случайно его изменить, а во-вторых, удобнее использовать общий централизованный набор шаблонов для всех пользователей на предприятии, не копируя эти шаблоны на компьютеры каждого пользователя;

· второй вариант — хранить шаблоны в скрытом сетевом каталоге на файл-сервере, доступном только на чтение. При этом нам не придется заботиться о наличие необходимого шаблона на компьютере пользователя. Однако и есть здесь проблемы: программа получается неавтономной, зависящей от внешних файлов на файл-сервере. Перенос ее, например, в филиалы будет сопряжен со сложностями;

· третий вариант — поместить шаблон в базу данных. Удобнее всего поместить шаблон в виде объекта OLE в базу данных Access. В этой же базе данных Access удобно размещать код приложения, графические формы для пользователя и т.п. Запуск Word при этом будет производиться программно из Access. Конечно, такая программа сможет обращаться не только к данным в базе данных Access. но и к данным во внешних источниках — на SQL Server, Oracle и т.п.

Третий вариант наиболее удобен, поскольку ваше приложение со всеми шаблонами, программным кодом и т.п. будет состоять из единственного файла MDB (а документы будут создаваться как обычные файлы Word). Кроме того, Access сам по себе — очень мощное приложение, в нем есть множество удобных возможностей. Единственная проблема в этом случае — то, что метод Documents.Add() согласен принимать шаблон только в виде файла на диске, а про базы данных он ничего не знает. Можно предварительно извлекать шаблон документа из базы данных и сохранять его в файле во временном каталоге, но лучше идти другим путем и активизировать объект шаблона в базе данных методом OLEActivate(). При этом у нас автоматически будет запущен Word и в нем будет создан новый документ на основе шаблона из базы данных. Подробнее о том, как это делается — в главе про Access.

Часто возникает потребность программным способом не создавать новый документ, а открыть уже имеющийся и с ним что-то сделать. Открыть документ проще всего при помощи метода Open() коллекции Documents. Самый простой вариант применения этого метода выглядит так:

Dim oDoc 1 As Document

Set oDoc1 = Documents.Open("c:\doc1.doc")

Если этот документ уже открыт, то умолчанию просто создается ссылка на уже открытый документ, вместо открытия документа заново.

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

Сохранять документы лучше при помощи методов Save() и SaveAs() объекта Document. В коллекции Documents есть также свой метод Save(), который позволяет сохранять все открытые документы Word сразу, но обычно это менее удобно.

Заметим, что в Word можно открывать не только документы Word разных версий, но и документы десятков других различных форматов, про которые знает Word — TXT, HTML, XML и т.п. Сохранять также можно в одном из десятков встроенных форматов или использовать свой собственный пользовательский формат (при помощи объекта FileConvertor). За счет этого программным образом можно очень удобно преобразовывать при помощи макросов большое количество документов, которые могут находиться в разных каталогах на файловых серверах, или, к примеру, в общих папках Exchange Server или в базе данных SharePoint Portal Server. Для прохода по дереву каталогов удобнее всего использовать объект FileSystemObject из библиотеки Scripting.Runtime, которая есть на любом компьютере Windows (см. раздел 4).

10.4.2 Свойства и методы коллекции Documents

Коллекция Word.Documents, методы Add(), Open(), Item(), программное создание и открытие документов Word в VBA

Коллекция Documents, как уже говорилось, представляет все документы Word, открытые в настоящий момент. Начинается нумерация документов в коллекции с 1. Из свойств этой коллекции интерес может представлять только свойство Count — количество открытых документов. Гораздо важнее методы этой коллекции. Про некоторые из них мы уже говорили в предыдущем разделе, но здесь для справки при приведем информацию о них еще раз:

· Add() — этот метод позволяет создать и сразу же открыть новый документ (и вернуть ссылку на его объект). Это — наиболее распространенный способ создания новых документов в Word. Полный синтаксис этого метода выглядит как

Add(Template, NewTemplate, DocumentType, Visible)

Template — это шаблон для создания нового документа, NewTemplate (true/false) — делать ли новый документ шаблоном, DocumentType — варианты: wdNewBlankDocument, wdNewEmailMessage, wdNewFrameset или wdNewWebPage (по умолчанию — новый чистый документ), Visible — будет ли новый документ видимым (по умолчанию) или невидимым.

· Open() — этот еще один важнейший метод коллекции Documents позволяет открыть документ с диска и добавить его в коллекцию. Этот метод принимает множество параметров, из которых обязательным является только один — имя документа (вместе с путем к нему). Самый простой вариант применения этого метода выглядит так:

Dim oDoc1 As Document

Set oDoc1 = Documents.Open("c:\doc1.doc")

· метод Item() позволяет найти нужный документ в коллекции по его индексу. Но обычно для получения ссылки на нужный документ используется конструкция For..Next с проверкой значения какого-либо свойства документа через If. Чаще всего это свойство — Name:

Dim oDoc1 As Document

For i = 1 To Documents.Count

Set oDoc1 = Documents.Item(i)

If oDoc1.Name = "doc1.doc" Then

Exit For

End If

Set oDoc1 = Nothing

Next

Эта конструкция возвращает ссылку в виде переменной oDoc1 на документ doc1.doc, если он точно есть в коллекции. Если его нет, то во избежание ошибок нужно реализовывать дополнительные проверки. На практике можно было бы подумать, не нужно ли вам перед сравнением привести имя документа doc1.doc в нижний регистр — если учитывать регистр букв при поиске вам не нужно.

Через свойство Item можно получить доступ к объекту документа напрямую. Например, в этом примере мы получаем имя первого документа в коллекции Documents:

MsgBox Documents.Item(1).Name

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

· методы CanCheckOut() (можно ли "забрать" документ в монопольный доступ) и CheckOut() (забрать документ в монопольный доступ) можно применять, если документ находится в документной библиотеке в базе данных SharePoint Portal Server.






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

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