Grunnleggende informasjon om OLE -automatisering ved bruk av VBA i Microsoft Excel

Anonim

Når du vil bruke funksjonalitet fra andre applikasjoner, må du bestemme om du vil bruke det
tidlig eller sen binding av objektvariabler.

Tidlig binding

Bindingen mellom objektvariabelen og objektet finner sted når applikasjonen kompileres.
Dette resulterer i bedre ytelse sammenlignet med når bindingen finner sted når applikasjonen kjøres (sen binding).
Hvis du vil opprette en tidlig binding, må du angi en referanse til det "fremmede" objektbiblioteket du vil bruke.
Dette gjøres fra VBE ved å bruke menyen Verktøy, referanser…. Når et VBProject har en referanse til en
objektbibliotek kan du deklarere spesifikke objektvariabler (f.eks. Dim oDoc som Word.Document). Dette vil også klare det
lettere å programmere "fremmedlegemer" siden VBE vil vise den samme programmeringshjelpen angående egenskaper,
metoder og hendelser som den viser for objektene som tilhører programmet du jobber med
fra (VBE har automatisk lagt til referansen til denne applikasjonen på forhånd).
Dette er et generelt kodeksempel som viser vba -automatiseringsfeil:

Sub OLEAutomationEarlyBinding () 'erstatt xxx med ett av følgende:' Access, Excel, Outlook, PowerPoint eller Word Dim oApp As xxx.Application 'tidlig binding Dim oDoc As xxx.Document' Excel.Workbook, Outlook.MailItem, PowerPoint.Presentation , Word.Document On Error Resume Next 'ignorere feil Angi oApp = GetObject (, "xxx.Application")' refererer til en eksisterende applikasjonsforekomst Hvis oApp er ingenting Så 'ingen eksisterende applikasjon kjører Set oApp = New xxx.Application' create a ny applikasjonsforekomst Slutt hvis ved feil Gå til 0 'gjenoppta normal feilhåndtering Hvis oApp er ingenting Da' kan ikke opprette programmet MsgBox "Programmet er ikke tilgjengelig!", vbExclamation End If With oApp .Visible = True 'gjør programmet til objekt synlig 'på dette tidspunktet programmet er synlig' gjør noe avhengig av programmet … Sett oDoc = .Documents.Open ("c: \ mappenavn \ filnavn.doc") 'åpne et dokument' … oDoc.Close True 'lukk og lagre avslutte programmet Slutt med Sett oDoc = Ingenting 'ledig minne Sett oApp = Ingenting' ledig minne Avslutt Sub

Sen binding

Bindingen mellom objektvariabelen og objektet finner sted når programmet kjøres.
Dette resulterer i tregere ytelse sammenlignet med når bindingen finner sted når søknaden kompileres (tidlig binding).
Hvis du ikke legger til en referanse til objektbiblioteket som tilhører den "utenlandske" applikasjonen, må du
erklære generelle objektvariabler (f.eks. Dim oDoc som objekt). Dette vil gjøre det vanskeligere å programmere
"fremmedlegemer" siden VBE ikke vil vise den samme programmeringshjelpen angående egenskaper,
metoder og hendelser som den viser for objektene som tilhører programmet du jobber fra.
Dette er et generelt kodeksempel:

Sub OLEAutomationLateBinding () 'erstatt xxx med ett av følgende:' Access, Excel, Outlook, PowerPoint eller Word Dim oApp As Object 'sen binding Dim oDoc As Object' sen binding På feil Resume Next 'ignorer feil Angi oApp = GetObject (, "xxx.Application") 'refererer til en eksisterende applikasjonsforekomst Hvis oApp er ingenting Da' ingen eksisterende applikasjon kjører Sett oApp = CreateObject ("xxx.Application") 'opprett en ny applikasjonsforekomst End If On Error GoTo 0' gjenoppta normal feil håndtering Hvis oApp er ingenting Da 'ikke i stand til å opprette programmet MsgBox "Programmet er ikke tilgjengelig!", vbExclamation End If With oApp .Visible = True' gjør applikasjonsobjektet synlig 'på dette tidspunktet programmet er synlig' gjør noe avhengig på programmet … Angi oDoc = .Documents.Open ("c: \ mappenavn \ filename.doc") 'åpne et dokument' … oDoc.Close True 'lukk og lagre dokumentet. Avslutt' lukk programmet Avslutt med sett oDoc = Ingenting 'ledig minne Sett oApp = Ingenting' fr ee minne Avslutt Sub