Запуск других Windows-программ

Как мне открыть Word (или Excel, или Блокнот (Notepad) или танцевальную видеоигру Dance Dance Revolution)?

В язык Visual Basic включена функция shell, которая позволяет запускать другую про­грамму. Для применения функции Shell необходимо задать полный путь, указываю­щий на файл программы. Вот приведен пример запуска Windows-программы Калькуля­тор:

Shell "C:\Windows\calc.exe"

Когда вы применяете функцию shell, ОС Windows запускает запрошенную програм­му, а ваш код продолжает выполняться. Но у вашего программного кода нет реальной возможности взаимодействовать с программой. Вы не можете заставить ее сделать что-либо или выяснить, что она закрыта.

Shell кажется удобной функцией, но у нее есть существенная проблема. Для того чтобы использовать функцию Shell, нужно знать точное местонахождение программы. Вы не можете просто сказать: "Запусти Microsoft Word" или "Открой этот документ". Вместо этого вы должны глубоко зарыться в файловую систему жесткого диска, чтобы найти файл нужной программы (который обычно находится где-то в зоне вашего компьютера с именем Program Files). Хуже того, после того как вы заставили функцию Shell рабо­тать на вашем компьютере, нет никакой гарантии, что она заработает на какой-либо дру­гой машине — в конце концов, та же программа может быть установлена где-то совсем в другом месте.

И как с этим бороться? Можно воспользоваться гиперссылкой, которая запускает нуж­ную программу автоматически, если по ссылке щелкнуть кнопкой мыши. Но некоторые программы, включая других членов семейства Microsoft Office, предлагают лучший ва­риант. Они предоставляют собственные объекты, которыми можно манипулировать в коде на языке Visual Basic. Благодаря этим объектам можно применять эти программы, не беспокоясь об их местонахождении. Вы конечно же можете делать с ними гораздо больше, задавая различные свойства и вызывая разнообразные методы.


Можно заставить программу Word открыть документ, добавить в него некоторый текст, отправить 10 копий на принтер и затем завершить программу.

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

Dim Word As Object

Set Word = CreateObject("Word.Application")

Word.Visible = True

Word.Documents.Open CurrentProject.Path & "\GothicWedding.doc"

Если эта технология заинтересовала вас, обратитесь к справочной системе программы Word, из нее можно узнать гораздо больше об объектной модели Word. Другой полез­ный ресурс — Microsoft's Office Developer Center (Центр разработчиков Microsoft Office) на Web-сайте http://msdn.microsoft.com/office.

 

Объект DoCmd

Объект DoCmd — единственный наиболее полезный объект в мире программирования Access. Он обеспечивает "покупку всего нужного в одном месте" для самых разнообразных задач, таких как открытие форм и отчетов, запуск других программ, поиск записей и выпол­нение макросов.

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

DoCmd.OpenForm "ProductCatalog"

Как большинство методов объекта DoCmd, OpenForm может использовать несколько не­обязательных параметров. Visual Basic подскажет, отобразив список возможных параметров в процессе ввода имени метода. Далее показан пример, в котором пропущены второй и тре­тий параметры (обратите внимание на запятые без значений между ними), но задается фильтр в четвертом параметре и режим данных в пятом:

DoCmd.OpenForm "ProductCatalog", , ,"ID=5", acFormReadOnly

Эта команда открывает форму ProductCatalog,применяет фильтр для вывода на экран одной записи с ID (Код), равным 5, и использует режим "только чтение" для запрета каких-либо изменений.

 

Примечание

В данном примере используется константа acFormReadOnly. Константы — это числовые значения, которым присвоены более информативные имена. Таким образом вместо запомина­ния числа, обозначающего режим "только чтение", можно применять более осмысленную кон­станту acFormReadOnly. Всегда, когда встречается переменная, начинающаяся с ас или vb, и вы ее не создавали сами, знайте, что это константа. Конечно, для того чтобы пользоваться константами, нужно все-таки знать их имена, но в этом может помочь средство IntelliSense, как показано на рис. 17.8.



Рис. 17.8.Когда вы добираетесь до параметра режима данных, редактор Visual Basic выводит на экран список всех допустимых констант, которые можно использовать. Для того чтобы выяснить, что они означают (если это не очевидно), следует обратиться к справочной системе Access

 

 

Метод OpenForm может показаться знакомым, потому что вы уже видели такие же функции в макрокоманде ОткрытьФорму(OpenForm) (см. главу 15). В действительности все методы объекта DoCmd соотносятся с макрокомандами, которые вы изучали в главе15. В табл. 17.1 перечислены наиболее полезные методы.

Таблица 17.1. Полезные методы объекта DoCmd

Метод Описание
ApplyFilter Применяет фильтр к таблице, форме, запросу или отчету для того, чтобы сконцентрировать внимание на интересующих вас записях
Веер Производит некоторый сигнал. Обычно используется для привле­чения внимания к возникшей проблеме
Close Закрывает текущий объект БД (или конкретный объект, который задан)
CopyDatabaseFile Предоставляет быстрый способ создания резервной копии БД
FindRecord, FindNext и GoToRecord Предоставляет разные способы поиска нужной записи
Hourglass Включает отображение указателя мыши в виде песочных часов (или выключает). Применяется для того, чтобы дать знать пользо­вателю о том, что выполняется требующая времени задача и сле­дует остыть

Таблица 17.1 (окончание)