Автоматизация в Excel. Начало
При работе с Excel иногда приходиться
налаживать взаимодействие программного кода с другими приложениями офисного
пакета или вне него, например с Internet Explorer. Так сказать связывать. Для
примера возьмем Word, хотя и IE вставим немного.
Управлять Word из других приложений позволяет сервер автоматизации Word. Такой же сервер есть и у других офисных приложений (и не только офисных). В данном случае, сервером будет считаться Word, а клиентом Excel. Из него будут посылаться запросы на выполнение некоторого кода, а сервер автоматизации Word будет обрабатывать эти запросы. Это теоретически означает возможность написания программного кода в Excel, который будет выполняться в Word и использовать встроенные функции Word. Для использования такой возможности необходимо указать ссылку на библиотеку, функционал которой собираемся использовать. В данном случае Word. Это можно сделать двумя путями: указать библиотеку явно, до исполнения программного кода и во время исполнения программного кода.
Первый способ называется раннее
связывание. В меню Tools-References редактора vba выберите Microsoft
Word12.0 Object Library. В других версиях офисных
пакетов, как вы понимаете, цифры другие. view plainprint? 1. Dim WApp As Word.Application 2. Set WApp = New Word.Application Второй способ называется позднее связывание. При этом нет необходимости указывать ссылку на библиотеку. Создается экземпляр класса (объект) и возвращается ссылка на него используя функцию CreateObject.
класс - обязательный
параметр. Тип данных Variant(String). Имя приложения и класс, на
основе которого создается объект. Имеет синтаксис
имяприложения.названиекласса view plainprint? 1. Dim WApp As Object 2. Set WApp = CreateObject("Word.Application")
view plainprint? 1. Dim WApp As Object 2. Set WApp = CreateObject("Word.Application") 3. WApp.Visible = True
view plainprint? 1. Dim WApp As Object 2. Set WApp = CreateObject("Word.Application", "192.168.1.4")
При наличии нескольких установленных офисных продуктов различных версий в системе, можно указать, на основе какой версии создать объект. Однако если указанной версии на компьютере не окажется, произойдет ошибка. view plainprint? 1. Dim WApp As Object 2. Set WApp = CreateObject("Word.Application.12") Замечания: создаваемый объект
Word.Application невидимый. Это ускоряет работу с ним, но в случае
возникновения ошибки, он остается в памяти. Используйте WApp.Visible = True в
обработчике ошибок. Каждый раз при использовании функции CreateObject будет
создан новый объект.
путь - необязательный параметр. Тип данных Variant(String).
Полный путь к файлу, связанному с объектом. view plainprint? 1. Dim WApp As Object 2. Set WApp = GetObject(, "Word.Application") 3. Debug.Print WApp.Documents.Count
Создает ссылку на открытый в word файл Pacienti.txt и подсчитывает количество строк в нем, однако если документ не открыт, будет ошибка. view plainprint? 1. Dim WDoc As Object 2. Set WDoc = GetObject(ThisWorkbook.Path & "\Pacienti.txt") 3. Debug.Print WDoc.Sentences.Count
view plainprint? 1. Dim WDoc As Object 2. On Error GoTo cvv_Error 3. Set WDoc = GetObject(ThisWorkbook.Path & "\Pacienti.txt") 4. Debug.Print WDoc.Sentences.Count 5. On Error GoTo 0 6. Exit Sub 7. cvv_Error: 8. If Err.Number = 432 Then MsgBox "Файл " & ThisWorkbook.Path & "\Pacienti.txt" & " не открыт..."
view plainprint? 1. Dim IE As Object 2. Set IE = CreateObject("InternetExplorer.Application") 3. IE.Visible = True Ну а
для раннего связывания с этим браузером, необходимо дать ссылку на
библиотеку Microsoft Internet Controls. Ну а если
планируется работать с интернет страницами (разбор структуры и данных), то
и Microsoft HTML Object Library. |
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.