Объектно-ориентированный подход в программировании. Проектирование и реализация приложений в среде Microsof Office. Евсеева О.Н. - 85 стр.

UptoLike

Составители: 

1.4. Программирование на VBA 86
3
ошибку. Поэтому сначала был включен перехват ошибки и разрешено
продолжать выполнение программы даже в случае возникновения ошибки, а
затем выполняется попытка получить доступ к приложению Word. После
завершения работы функции GetObject проверяется, чем завершилось ее
выполнение. Если Word был уже запущен, то ошибки не произошло и все уже в
порядке. Если же произошла ошибка, то необходимо запустить Word, что и
делается с помощью функции CreateObject. Кроме того, в этом фрагменте
также запоминается, был ли Word активен до начала работы процедуры. Эти
сведения используются при завершении работы процедуры. Хорошим тоном
является приведение компьютера в исходное состояние: если Word был
активен, то следует оставить его в активном состоянии, если же он был
специально запущен этой процедурой, то его следует завершить при выходе из
процедуры. Вот соответствующий фрагмент кода:
' Завершение работы
If Word_WasNotRunning Then
' завершить приложение, если оно не выполнялось
MS_Word.Quit
End If
Set MS_Word = Nothing
End Sub
Замечание
В данном случае было умышленно несколько усложнен код процедуры для
того чтобы продемонстрировать различия между функциями GetObject и
CreateObject. Без каких либо упущений можно просто воспользоваться в
процедуре функцией CreateObject для активизации объекта Word. Если
при использовании этой функции для запуска Word приложение уже
запущено, то новый экземпляр Word не запускается. При завершении
процедуры локально объявленный объект-приложение автоматически
перестает существовать. При этом приложение завершится, если оно было
запущено в результате работы этой процедуры, и останется активным в
противном случае.
Возникает резонный вопрос: зачем же было огород городить? Дело в том,
что все это справедливо для приложения Word, но все может обстоять и по
другому при работе с иными объектами (например, с объектами ActiveX,
запуск которых возможен с помощью этих же функций).
Сначала определим местонахождение файлов с документами, составляющими
эту книгу. В качестве исходной точки отсчета возьмем текущее положение
активной рабочей книги:
BookPath = ActiveWorkbook.Path
Далее определим длину списка документов на рабочем листе Excel, а затем
выпишем обрамляющие команды цикла For ... Next: