Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA For Excel Часть 02.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.08 Mб
Скачать

Приложение 6 (Ссылка на приложение ms Office)

Возможно сделать ссылку на приложение MS Office из Visual Basic, а так же на приложение MS Office из проекта VBA. Например, ссылку из Excel на приложение Word. Ссылка возможна только в том случаи, если приложение, на которое делают ссылку установлено на компьютер. Ссылку можно делать через переменную типа Variant или Object, ссылка устанавливается на объект Application соответствующего приложения следующим образом:

Set Имя_указателя = _

CreateObject("Имя_Приложения.Application"[, “Имя_сервера” ] )

Имя_Приложения - это имя соответствующего приложения MS Office:

  • Word – Имя приложения Word

  • Excel – Имя приложения Excel

  • Access – Имя приложения Access

  • Outlook – Имя приложения Outlook

  • PowerPoint – Имя приложения Power Point

Имя_сервера – не обязательный входной параметр, указывающий имя сетевого сервера, на котором будет создан объект приложения (там, где находится приложение Microsoft Office).

Указатель получает все свойства и методы объекта Application конкретного приложения. Приложение загружается после установки ссылки в невидимом режиме. Для того, что бы сделать приложение видимым используют свойство Visible объекта Application. В примере ниже показано как загружают файл приложения Word из приложения Excel. Файл загружается после нажатия на объект кнопку, которая находится на листе книги Excel.

'кнопка с надписью "Обработка модулей VBA"

Private Sub CommandButton1_Click()

Dim app As Object

'создаем указатель на Word приложение

Set app = CreateObject("Word.Application")

If MsgBox("Открыть файл приложения Word?", vbYesNo + vbQuestion) = vbYes Then

'Делаем видимым приложение Word

app.Visible = True

'открываем файл Word-a

app.Documents.Open "C:\Мои документы\Программирование в VBA\Обработка модулей VBA.doc"

'Делаем окно приложения Word максимально большим

app.WindowState = 1

Else

'Закрываем приложение Word

app.Quit

End If

'Снимаем указатель с Word приложения

Set app = Nothing

End Sub

В указанном нами примере используется в качестве указателя на приложение объектная переменная. Использование объектной переменной, как и использование переменой Variant в качестве указателя на приложение влечет за собой определенные трудности. В редакторе модуля при использовании данных типов указателя, после ввода имени указателя и точки за ним, не появляется вспомогательный список свойств, методов и потомков указателя. Для того, что бы этот список появлялся, необходимо в проекте с начало установить ссылку на приложение библиотеки Word через меню редактора VBA Сервис-Ссылки(Tolls-Referens)-Microsoft Word 8.0 Object Library. После установления ссылки на данную библиотеку, возможно объявить переменную app соответствующим типом. Это даст возможность просмотреть список свойств, методов и потомков объекта app в окне редактора модуля. Переменная app в этом случаи, должна быть объявлена следующим образом:

Dim app As Word.application

Можно не только создать через указатель новый экземпляр приложения методом CreateObject, но и установить связь с уже открытым приложением через метод GetObject:

Set Имя_указателя = _

GetObject( ["Полное имя файла приложения"] _

[, “ Имя_Приложения.Application ” ] )

В функции GetObject используется один из двух необязательных входных параметров.

Определить установлен или нет указатель на объект можно оператором Is следующим образом:

  • ИмяУказателя Is Nothing - указатель установлен на объект

  • Not ИмяУказателя Is Nothing - указатель не установлен на объект

Пример создания указателя на открытое приложение Word:

Dim app As Word.application

'создаем указатель на открытое приложение Word

Set app = GetObject( ,"Word.Application")

If app Is Nothing Then

'указатель на приложение не создан,

‘создаем указатель на новый экземпляр приложения

Set app = CreateObject("Word.Application")

If app Is Nothing Then

Msgbox “Ошибка в создании указателя и нового экземпляра приложения Word!”

End

end if

end if

Ниже, нами приведен пример указателя на приложение Access предназначенного для открытия формы базы данных Access. Для того, что бы наш пример работал подключите библиотеку Сервис-Ссылки(Tolls-Referens)-Microsoft Acceess 8.0 Object Library или сделайте переменную app типом Variant. Приложение Acceess, в отличии от приложения Word закрывается даже тогда, когда снят указатель на него. Если с приложения Acceess не снят указатель, то окно данного приложения невозможно закрыть. При попытки закрытия окна приложения оно просто сворачивается. Поэтому, в примере ниже перед снятием указателя на Access мы выводим окно сообщения "Завершить сеанс с Access", пользователь увидит это окно, после того, как попытается закрыть приложение Access.

‘Глобальные константы модуля

Const ИмяБазы = "C:\Мои документы\Курсовая2\Отделы.mdb"

Const ИмяФормы = "Должности"

‘Макрос запуска формы

Sub ЗапускФормыAccess()

Dim app As Access.Application

'создаем указатель на Access приложение

Set app = CreateObject("Access.Application")

'Делаем видимым приложение

app.Visible = True

'Открываем базу

app.OpenCurrentDatabase ИмяБазы

'Открываем окно формы

app.DoCmd.OpenForm ИмяФормы, acNormal, "", "", , acNormal

'Делаем окно формы максимально большим

app.DoCmd.Maximize

MsgBox "Завершить сеанс с Access"

app.Quit

'Снимаем указатель с приложения

Set app = Nothing

End Sub

Если у вас нет базы данных для этого примера, вы можете ее создать. В следующей главе данной книги немного рассказано о создании базы в Access.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]