Основна информация за автоматизацията на OLE с помощта на VBA в Microsoft Excel

Anonim

Когато искате да използвате функционалност от други приложения, трябва да решите дали искате да използвате
ранно или късно свързване на обектни променливи.

Ранно обвързване

Свързването между променливата на обекта и обекта се осъществява, когато приложението се компилира.
Това води до по -добра производителност в сравнение с това, когато свързването се извършва, когато приложението се изпълнява (късно свързване).
Ако искате да създадете ранно свързване, трябва да зададете препратка към "чуждата" библиотека на обекти, която искате да използвате.
Това става от VBE с помощта на менюто Инструменти, Препратки …. Когато VBProject има препратка към
обектна библиотека, можете да декларирате конкретни променливи на обекти (например Dim oDoc като Word.Document). Това също ще го направи
по-лесно програмиране на „чужди обекти“, тъй като VBE ще показва същата помощ за програмиране по отношение на свойствата,
методи и събития, които показва за обектите, принадлежащи на приложението, с което работите
от (VBE автоматично е добавил препратката към това приложение предварително).
Това е общ пример за код, показващ грешка при автоматизация на vba:

Sub OLEAutomationEarlyBinding () 'заменете xxx с едно от следните:' Access, Excel, Outlook, PowerPoint или Word Dim oApp As xxx.Application 'Ранно свързване Dim oDoc As xxx.Document' Excel.Workbook, Outlook.MailItem, PowerPoint.Presentation , Word.Document On Error Resume Next 'игнориране на грешки Задаване на oApp = GetObject (, "xxx.Application")' препратка към съществуващ екземпляр на приложението Ако oApp не е нищо Тогава 'няма съществуващо приложение, работещо Set oApp = New xxx.Application' създайте нов екземпляр на приложението Край, ако е включен Грешка GoTo 0 'възобновете нормалната обработка на грешки Ако oApp не е нищо Тогава' не може да създаде приложението MsgBox "Приложението не е достъпно!", vbExclamation Край Ако с oApp .Visible = True "направете обекта на приложението видим 'в този момент приложението е видимо' направете нещо в зависимост от приложението … Задайте oDoc = .Documents.Open ("c: \ име на папка \ име на файл.doc") 'отворете документ' … oDoc.Close True 'затворете и запишете Документът. Quit 'затворете приложението End With Set oDoc = Нищо 'свободна памет Set oApp = Нищо' свободна памет End Sub

Късно свързване

Свързването между променливата на обекта и обекта се осъществява, когато приложението се изпълнява.
Това води до по -бавна производителност в сравнение с това, когато свързването се извършва, когато приложението е компилирано (ранно свързване).
Ако не добавите препратка към библиотеката на обекти, принадлежаща на "чуждестранното" приложение, трябва
декларират общи променливи на обекта (например Dim oDoc като обект). Това ще затрудни програмирането
„чужди обекти“, тъй като VBE няма да показва същата помощ за програмиране по отношение на свойствата,
методи и събития, които показва за обектите, принадлежащи на приложението, от което работите.
Това е общ пример за код:

Sub OLEAutomationLateBinding () 'заменете xxx с едно от следните:' Access, Excel, Outlook, PowerPoint или Word Dim oApp As Object 'късно свързване Dim oDoc As Object' късно свързване On Error Resume Next 'игнорирайте грешките Set oApp = GetObject (, "xxx.Application") 'препратка към съществуващ екземпляр на приложението Ако oApp не е нищо Тогава' не съществува съществуващо приложение Задайте oApp = CreateObject ("xxx.Application") 'създайте нов екземпляр на приложение Край, ако е включен Грешка GoTo 0' възобновява нормалната грешка обработка Ако oApp не е нищо Тогава „не мога да създам приложението MsgBox„ Приложението не е достъпно! “, vbExclamation Край Ако с oApp .Visible = True„ направи обекта на приложението видим “в този момент приложението е видимо„ направете нещо в зависимост на приложението … Задайте oDoc = .Documents.Open ("c: \ име на папката \ име на файл.doc") 'отворете документ' … oDoc.Close True 'затворете и запишете документа. Quit' затворете приложението Край с Set oDoc = Нищо 'свободна памет Задайте oApp = Нищо' fr ee памет End Sub