Ak chcete používať funkcie z iných aplikácií, musíte sa rozhodnúť, či ich chcete používať
skorá alebo neskorá väzba objektových premenných.
Včasná väzba
Väzba medzi premennou objektu a objektom prebieha pri kompilácii aplikácie.
Výsledkom je lepší výkon v porovnaní s tým, keď sa väzba uskutočňuje pri spustení aplikácie (neskorá väzba).
Ak chcete vytvoriť skorú väzbu, musíte nastaviť odkaz na "cudziu" knižnicu objektov, ktorú chcete použiť.
To sa vykonáva z VBE pomocou ponuky Nástroje, Referencie …. Keď má projekt VBP odkaz na súbor
objektovej knižnici môžete deklarovať konkrétne objektové premenné (napr. Dim oDoc ako Word.Document). Aj toto sa podarí
jednoduchšie programovanie „cudzích predmetov“, pretože VBE zobrazí rovnakú pomoc pri programovaní, pokiaľ ide o vlastnosti,
metódy a udalosti, ktoré zobrazuje pre objekty patriace aplikácii, s ktorou pracujete
od (VBE automaticky vopred pridala odkaz na túto aplikáciu).
Toto je všeobecný príklad kódu, ktorý ukazuje chybu automatizácie vba:
Sub OLEAutomationEarlyBinding () 'nahradiť xxx jedným z nasledujúcich:' Access, Excel, Outlook, PowerPoint alebo Word Dim oApp As xxx.Application 'early binding Dim oDoc As xxx.Document' Excel.Workbook, Outlook.MailItem, PowerPoint.Presentation „Word.Document On Error Resume Next 'ignore errors Set oApp = GetObject (," xxx.Application ")' reference an existing application instance If oApp Is Nothing Then 'no existing application running running Set oApp = New xxx.Application' create a nová inštancia aplikácie End If On Error GoTo 0 'pokračovať v normálnom spracovaní chýb If oApp Is Nothing Then' nie je možné vytvoriť aplikáciu MsgBox "Aplikácia nie je k dispozícii!", vbExclamation Ukončiť If s oApp .Visible = True 'urobí objekt aplikácie viditeľný 'v tomto mieste je aplikácia viditeľná' urobte niečo v závislosti od aplikácie … Nastaviť oDoc = .Documents.Open ("c: \ názov_složky \ názov.doc") 'otvoriť dokument' … oDoc.Close True 'zavrieť a uložiť dokument. Ukončite aplikáciu End With Set oDoc = Nothing 'free memory Set oApp = Nothing' free memory End Sub
Neskorá väzba
Väzba medzi premennou objektu a objektom prebieha pri spustení aplikácie.
Výsledkom je nižší výkon v porovnaní s tým, keď väzba prebieha pri kompilácii aplikácie (skorá väzba).
Ak nepridáte odkaz na knižnicu objektov, ktorá patrí do „zahraničnej“ aplikácie, musíte
deklarujte všeobecné premenné objektu (napr. Dim oDoc ako objekt). Vďaka tomu bude programovanie ťažšie
„cudzie objekty“, pretože VBE nebude zobrazovať rovnakú pomoc pri programovaní, pokiaľ ide o vlastnosti,
metódy a udalosti, ktoré zobrazuje pre objekty patriace k aplikácii, z ktorej pracujete.
Toto je všeobecný príklad kódu:
Sub OLEAutomationLateBinding () 'nahraďte xxx jedným z nasledujúcich:' Access, Excel, Outlook, PowerPoint alebo Word Dim oApp As Object 'neskorá väzba Dim oDoc As Object' neskorá väzba On Error Resume Next 'ignorovať chyby Nastaviť oApp = GetObject (, „xxx.Application“) 'odkazuje na existujúcu inštanciu aplikácie, ak oApp nie je nič, potom' nie je spustená žiadna existujúca aplikácia Set oApp = CreateObject ("xxx.Application") 'vytvorte novú inštanciu aplikácie Koniec Ak je chyba GoTo 0' obnoviť normálnu chybu handling if oApp Is nothing Then 'can't create the application MsgBox "The application is not available!", vbExclamation End If With oApp .Visible = True' make the application object visible 'at this point the application is visible' do something v aplikácii … Nastaviť oDoc = .Documents.Open ("c: \ názov_složky \ názov_souboru.doc") 'otvoriť dokument' … oDoc.Close True 'zavrieť a uložiť dokument. Ukončiť' zavrieť aplikáciu Konec Nastaviť oDoc = Nič 'voľná pamäť Nastaviť oApp = Nič' fr ee pamäť Koniec pod