Grundläggande information om OLE -automation med VBA i Microsoft Excel

Anonim

När du vill använda funktionalitet från andra program måste du bestämma om du vill använda det
tidig eller sen bindning av objektvariabler.

Tidig bindning

Bindningen mellan objektvariabeln och objektet sker när applikationen kompileras.
Detta resulterar i bättre prestanda jämfört med när bindningen sker när applikationen körs (sen bindning).
Om du vill skapa en tidig bindning måste du ange en referens till det "främmande" objektbiblioteket du vill använda.
Detta görs från VBE med hjälp av menyn Verktyg, referenser…. När ett VBProject har en referens till en
objektbibliotek kan du deklarera specifika objektvariabler (t.ex. Dim oDoc som Word.Document). Detta kommer också att klara det
lättare att programmera "främmande objekt" eftersom VBE kommer att visa samma programmeringshjälp angående egenskaper,
metoder och händelser som visas för de objekt som tillhör programmet du arbetar
från (VBE har automatiskt lagt till referensen till denna applikation i förväg).
Detta är ett generellt kodexempel som visar vba -automatiseringsfel:

Sub OLEAutomationEarlyBinding () 'ersätt xxx med något av följande:' Access, Excel, Outlook, PowerPoint eller Word Dim oApp As xxx.Application 'tidig bindning Dim oDoc As xxx.Document' Excel.Workbook, Outlook.MailItem, PowerPoint.Presentation , Word.Document Vid fel Återuppta Nästa 'ignorera fel Ange oApp = GetObject (, "xxx.Application")' referera till en befintlig applikationsinstans Om oApp är ingenting Då "ingen befintlig applikation körs Ställ in oApp = Ny xxx.Application" skapa en ny applikationsinstans Avsluta vid fel Gå till 0 'återuppta normal felhantering Om oApp är ingenting Då' kan inte skapa programmet MsgBox "Programmet är inte tillgängligt!", vbExclamation End If With oApp .Visible = True 'gör programmet till objekt synlig 'vid denna tidpunkt är applikationen synlig' gör något beroende på applikation … Ställ in oDoc = .Documents.Open ("c: \ foldername \ filename.doc") 'öppna ett dokument' … oDoc.Close True 'stäng och spara avsluta programmet Avsluta med Set oDoc = Ingenting 'ledigt minne Ange oApp = Ingenting' ledigt minne Slut Sub

Sen bindning

Bindningen mellan objektvariabeln och objektet sker när programmet körs.
Detta resulterar i långsammare prestanda jämfört med när bindningen sker när ansökan sammanställs (tidig bindning).
Om du inte lägger till en referens till objektbiblioteket som tillhör den "främmande" applikationen måste du
deklarera allmänna objektvariabler (t.ex. Dim oDoc som objekt). Detta kommer att göra det svårare att programmera
"främmande föremål" eftersom VBE inte kommer att visa samma programmeringshjälp angående egenskaper,
metoder och händelser som visas för de objekt som tillhör programmet du arbetar från.
Detta är ett generellt kodexempel:

Sub OLEAutomationLateBinding () 'ersätt xxx med något av följande:' Access, Excel, Outlook, PowerPoint eller Word Dim oApp As Object 'sen bindning Dim oDoc As Object' sen bindning Vid fel Återuppta nästa 'ignorera fel Ange oApp = GetObject (, "xxx.Application") 'referera till en befintlig applikationsinstans Om oApp är ingenting Då' ingen befintlig applikation körs Ställ oApp = CreateObject ("xxx.Application") 'skapa en ny applikationsinstans Sluta vid fel GoTo 0' återuppta normalt fel hantering Om oApp är ingenting Då kan du inte skapa programmet MsgBox "Programmet är inte tillgängligt!", vbExclamation End If With oApp .Visible = True 'gör applikationsobjektet synligt' vid denna tidpunkt är programmet synligt 'gör något beroende på programmet … Ange oDoc = .Documents.Open ("c: \ foldername \ filename.doc") 'öppna ett dokument' … oDoc.Close True 'stäng och spara dokumentet. Avsluta' stäng programmet Sluta med Set oDoc = Ingenting 'ledigt minne Set oApp = Nothing' fr ee minne Avsluta Sub