Pagrindinė informacija apie OLE automatizavimą naudojant VBA „Microsoft Excel“

Anonim

Jei norite naudoti kitų programų funkcijas, turite nuspręsti, ar norite jas naudoti
ankstyvas ar vėlyvas objektų kintamųjų surišimas.

Ankstyvas įrišimas

Susiejimas tarp objekto kintamojo ir objekto vyksta tada, kai programa yra sudaryta.
Dėl to pasiekiamas geresnis našumas, palyginti su įrišimu, kai programa paleidžiama (vėlyvas įrišimas).
Jei norite sukurti ankstyvą įrišimą, turite nustatyti nuorodą į „užsienio“ objektų biblioteką, kurią norite naudoti.
Tai atliekama naudojant VBE, naudojant meniu Įrankiai, nuorodos…. Kai VBProject turi nuorodą į
objektų biblioteką galite deklaruoti konkrečius objekto kintamuosius (pvz., Dim oDoc kaip Word.Document). Tai taip pat pavyks
lengviau užprogramuoti „pašalinius objektus“, nes VBE rodys tą pačią programavimo pagalbą, susijusią su savybėmis,
metodus ir įvykius, kuriuos jis rodo objektams, priklausantiems jūsų dirbamai programai
iš (VBE iš anksto automatiškai pridėjo nuorodą į šią programą).
Tai yra bendras kodo pavyzdys, rodantis vba automatizavimo klaidą:

Sub OLEAutomationEarlyBinding () “pakeiskite xxx vienu iš šių:„ Access “,„ Excel “,„ Outlook “,„ PowerPoint “arba„ Word Dim oApp As xxx.Application “ankstyvas įrišimas Dim oDoc As xxx.Document 'Excel.Workbook, Outlook.MailItem, PowerPoint.Presentation , Word.Document On Error Resume Kitas 'ignoruoti klaidas Set oApp = GetObject (, "xxx.Application") "nuoroda į esamą programos egzempliorių Jei oApp yra nieko Tada" neveikia jokios esamos programos Nustatykite oApp = New xxx.Application "sukurkite naujos programos egzemplioriaus pabaiga, jei įjungta klaida „GoTo 0“ atnaujina įprastą klaidų tvarkymą. Jei „oApp“ yra nieko, tada „nepavyksta sukurti programos„ MsgBox “Programa nepasiekiama!“, „vbExclamation End If With with oApp. matomas "šiuo metu programa yra matoma" darykite ką nors priklausomai nuo programos … Nustatykite oDoc = .Documents.Open ("c: \ foldname \ filename.doc") 'atidarykite dokumentą' … oDoc.Close True 'uždarykite ir išsaugokite dokumentą. Uždarykite programą Baigti su rinkiniu oDoc = Nieko „laisvos atminties“ Nustatykite „oApp = Nieko“ laisvos atminties Pabaiga

Vėlyvas įrišimas

Susiejimas tarp objekto kintamojo ir objekto vyksta paleidus programą.
Tai lemia lėtesnį našumą, lyginant su įrišimu, kai programa yra sudaryta (ankstyvas įrišimas).
Jei nepridėsite nuorodos į objekto biblioteką, priklausančią „užsienio“ programai, turite tai padaryti
paskelbti bendrus objekto kintamuosius (pvz., Dim oDoc As Object). Tai apsunkins programavimą
„svetimi objektai“, nes VBE nerodys tos pačios programavimo pagalbos dėl savybių,
metodus ir įvykius, kuriuos jis rodo objektams, priklausantiems programai, iš kurios dirbate.
Tai yra bendras kodo pavyzdys:

Sub OLEAutomationLateBinding () “pakeiskite xxx vienu iš šių:„ Access “,„ Excel “,„ Outlook “,„ PowerPoint “arba„ Word “Dim oApp kaip objektas„ vėlyvas įrišimas Dim oDoc kaip objektas “vėlyvas įrišimas Įvyko klaida Tęsti toliau“ ignoruoti klaidas Set oApp = GetObject (, „xxx.Application") “nurodo esamą programos egzempliorių Jei„ oApp Is Nothing “Tada„ neveikia jokios esamos programos. tvarkymas Jei „oApp“ yra nieko, tada „nepavyksta sukurti programos„ MsgBox “Programa nepasiekiama!“, „vbExclamation End“ Jei naudojant „oApp .Visible = True“, kad programos objektas būtų matomas “šiuo metu programa yra matoma“, darykite ką nors programoje… Nustatykite oDoc = .Documents.Open ("c: \ foldname \ filename.doc") 'atidarykite dokumentą' … oDoc.Close True 'uždarykite ir išsaugokite dokumentą. Nieko „laisvos atminties“ Set oApp = Nothing “fr ee atmintis Pabaiga