|
|
|||||||||||||||||||||||||||||
|
Связь Access с другими приложениямиИсточник: infocity
Объектная модель MSWord. Основные понятия. Продолжая разговор о связи Access и других приложений необходимо четко знать структуру того приложения, которым мы собираемся управлять. Волею судеб получилось так, что первое приложение, краткий экскурс по которому я хочу провести, будет Word. Структура Word рассматривается в основном структура word97(8), но будут ссылки и на 9 версию. Рассматривать все объекты и классы я не буду, но важные обьекты структуры будут мной отмечены. За описанием остальных обращайтесь к литературе, встроенной помощи и другим источникам. Для получения "структурного дерева" приложения Word нажмите F1 в окне редактора кода VBA Word и в сведениях о программировании найдите пункт Microsoft Word Objects(Объекты Word). Там вы обнаружите более 35 коллекций и объектов. Обращаю ваше внимание только на объекты ,необходимые для понимания прочитанного материала в дальнейшем. Объектная модель Word представляет собой иерархию объектов, подчиненных одному объекту application. Большинство объектов используют только библиотеку Word, однако, некоторые ссылаются и на другие библиотеки (например, объект assistant - помощник ссылается на библиотеку объектов office) табличка объектов первого уровня иерархии объектной модели Word.(элементы с пометкой "2000" доступны соответственно только в версиях Word начиная с 9)
Быстро пробежав по основным объектам, обратим свое внимание на выделенные объекты (семейства). Т.к. именно они будут часто использоваться в дальнейшем. Хочется еще отметить, что объект Selection вынесен в верхушку иерархии Word и обращается к выделенной области или месту вставки активного документа приложения. Т.е. надо быть аккуратным, при обращении к свойствам этого объекта, пока открыты несколько документов Word, и не забывать, что Selection принадлежит объекту Application. И он единственный. Семейство Documents предназначено для управления документами Word. Это наиболее употребляемый объект и поэтому приведу описание основных объектов и семейств подчиненных этому объекту. Табличка объектов, подчиненных объекту Document .
В этой табличке были выделены те элементы объекта document, что принадлежат семейству range (диапазон). * Быстрый доступ к любому элементу - слову, предложению, и т.п. Эти огромные преимущества над многими иными способами отметки элементов текста, к сожалению, немного смазываются некоторыми неприятностями. * Большой текст - много элементов семейства - документ сильнее загружает машину при работе с ним. Нет, конечно же, Range работает правильно. Именно так, как и должно быть по правилам элементов семейств. Но не всегда так, как хочется. Например: Данилов М.Е. - Это 6 слов (точка - самостоятельное слово, пробел к словам не относится, далее следует место вставки т.е. курсор - это тоже слово), и одно предложение. Но проверка насильно мне указывает, что я забыл пробел после первой точки. Ставим пробел - получили 6 слов, и 2 предложения. Именно этот момент чаще всего вынуждает при авто переносе текста из какого-нибудь другого приложения office использовать другие механизмы передачи данных (поля, закладки, переменные). Но если вы точно знаете, сколько слов и предложений будет (было), то раскидать по местам нужные нам данные не составит очень уж большого труда. Принципы использования основных методов и свойств того или иного семейства Word не имеют особых различий с принципами общей работы с семействами в VBA. Поэтому обращать внимание на них нет необходимости, а при наличии таковой обращайтесь к встроенной помощи Word, там все понятно написано. А пока пример, на использование основных, отмеченных элементов. Задача.
Модуль запускается из Access и создает документ на диске С в корневом каталоге. Этот пример при пристальном осмотре должен научить использовать основные элементы семейства range объекта document приложения Word. В принципе, все вышеперечисленные механизмы позволят быстро ориентироваться в теле любого документа. Одно большое НО. Для передачи данных из другого приложения и создания шаблона надо выстроить четкий алгоритм расстановки данных. Самое неприятное, что из-за 1 неправильного символа все может "поплыть". Тогда полученный документ нельзя будет назвать созданным автоматически - его же придется потом подправлять руками. Те механизмы, что я привел, легко позволят забрасывать в чистый новосозданный файл какие-то данные без каких-либо затруднений. Указывая разные диапазоны вставки, можно заполнять и уже существующие документы, хотя, что бы не испортить уже существующие данные надо четко представлять себе процесс работы. Самым важным фактором этого метода является "наличие отсутствия" как такового файла шаблона создаваемого документа, т.е. посредством него можно сделать т.н. "Защиту от Дурака" - любителя стирать непонятно зачем файлы типа "Шаблон_моей_программы.dot" Что касается остальных, не менее важных элементов Document, то оставим их на следующий раз. Напоследок маленький, но забавный и не особо нужный в работе пример. Кувыркатель индикатора клавиатуры (язык при этом меняется только в Word) при запуске модуля из Access. Не знаю, то, что в других приложениях office язык остается тем же, хотя индикатор сменился, правильно это или нет. Вам судить. Но, как факт, такое возможно:
Этот момент показывает наличие некоторых удобных, но недоступных Access, механизмов Word. Так что ждем. Вдруг и у Access такое будет возможно. Без WinApi. Подведем итог всего, что тут написано. Приложение Word достаточно сложно и имеет множество (мало сказано J ) элементов, способов и проч. Навигацию по документам можно легко осуществлять программно через метод range. Создание нового документа и передача в него данных из Access с использованием вышеприведенного метода сложно, однако при разработке четкого алгоритма позволит обойтись без лишнего шаблона. Доступ к механизмам замены, сортировки, и статистики можно также получить только через этот метод. Ссылки по теме
|
|