Создание и использование макроса Visual Basic средствами Delphi
Возможно, это самый интересный раздел. Как уже говорилось и было пока-
зано на многочисленных примерах, используя среду визуального програм-
мирования приложений Delphi, можно без особого труда создать и исполь-
зовать любой документ приложения Word. Но есть некоторые ограничения,
которые порой достаточно трудно обойти. Одним из таких ограничений яв-
ляется невозможность передавать из Delphi в Visual Basic значения, типы
которых не поддерживаются для такого взаимодействия. Например, в доку-
менте требуется создать объект — ломаную линию. Для создания такого
объекта приходится заполнять массив данных для точек изломов этой ли-
нии, затем вызывать метод, аргументом которого является этот массив. При
создании контроллера автоматизации мы не можем использовать вызов из
Delphi функций Visual Basic, аргументами которых являются массивы. Как
быть в таком случае или в других случаях, когда ситуация кажется безвы-
ходной? Решением может быть создание макроса средствами Delphi с ис-
пользованием объектов Visual Basic и выполнение этого макроса, а затем его
удаление после выполнения задачи.
Макросы представляют собой тексты процедур или функций на языке Visual
Basic, связанные с проектами. Проекты являются родительскими объектами
по отношению к макросам. В свою очередь проект связан или с докумен-
том, или с шаблоном документа. Все проекты объединены в коллекцию
проектов. Текст макроса хранится в программном модуле, в котором могут
храниться и несколько макросов.
Доступ к коллекции или к любому проекту коллекции обеспечивают объек-
ты W.VBA.VBProjects и W.VBE.VBProjects.Item(i:integer), где i — индекс эле-
мента коллекции. Имя элемента коллекции связано с именем шаблона или
документа, обычно для шаблона Normal индекс равен единице. Проекту, в
свою очередь, принадлежит коллекция VBComponents элементов проекта —
это и визуальные объекты, и тексты макросов. Метод Add коллекции
VBComponents создает новый элемент. Чтобы создать стандартный модуль,
содержащий тексты макросов, аргумент этого метода должен быть равен
vbext_ct_StdModule. После создания модуля мы получаем доступ к тексто-
вой части макроса и можем записать в него любые операторы, соответст-
вующие спецификации языка Visual Basic. Рассмотрим пример процедуры. Создание и использование макроса Visual Basic средствами Delphi
В первом операторе этой процедуры мы создаем и получаем доступ к про-
фаммному модулю, в который сможем записать текст создаваемого макро-
са. Далее в строковую переменную записываем текст создаваемого макроса,
учитывая стиль написания операторов Visual Basic. Оператор
CodeModule.AddFromString(eee_);
где еее_ — строка, содержащая текст макроса, записывает текст макроса в
модуль. Далее создаем меню и кнопку, в свойство OnAction которой запи-
сываем строку — имена модуля и макроса, разделенные точкой. Метод
Execute кнопки запускает созданный макрос на выполнение. Далее удаляем
кнопку, панель и компонент, содержащий профаммный модуль. Если эту
процедуру выполнять по шагам, то сможем наблюдать следующее. На пер-
вом этапе мы видим в окне редактора Visual Basic, как создается профамм-
ный модуль и в него записывается текст макроса (рис. 10.17).
Рис. 10.17. Создан модуль и записан текст макроса
Далее, вызывается метод Execute кнопки, с которой связан макрос, и вы-
полняется программа на Visual Basic, записанная в программном модуле
(рис. 10.18).
После выполнения удаляются созданные элементы управления и программ-
ный модуль с текстом подпрофаммы на Visual Basic (рис. 10.19).
Рис. 10.18. Макрос запущен на выполнение
Рис. 10.19. Макрос выполнен, элементы управления и программный модуль удалены
Опубликовал Kest
September 26 2009 20:39:37 ·
0 Комментариев ·
9272 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.