Základní informace o automatizaci OLE pomocí VBA v Microsoft Excelu

Anonim

Pokud chcete používat funkce z jiných aplikací, musíte se rozhodnout, zda je chcete používat
časná nebo pozdní vazba objektových proměnných.

Raná vazba

Vazba mezi proměnnou objektu a objektem probíhá při kompilaci aplikace.
To má za následek lepší výkon ve srovnání s tím, kdy probíhá vazba při spuštění aplikace (pozdní vazba).
Pokud chcete vytvořit ranou vazbu, musíte nastavit odkaz na "cizí" knihovnu objektů, kterou chcete použít.
To se provádí z VBE pomocí nabídky Nástroje, Reference…. Když má VBProject odkaz na
knihovnu objektů můžete deklarovat konkrétní objektové proměnné (např. Dim oDoc jako Word.Document). Tím se to také podaří
snazší programování „cizích objektů“, protože VBE zobrazí stejnou nápovědu k programování, pokud jde o vlastnosti,
metody a události, které zobrazuje pro objekty patřící do aplikace, se kterou pracujete
od (VBE automaticky předem přidala odkaz na tuto aplikaci).
Toto je obecný příklad kódu ukazující chybu automatizace vba:

Sub OLEAutomationEarlyBinding () 'nahradit xxx jedním z následujících:' Access, Excel, Outlook, PowerPoint nebo 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á instance aplikace End If On Error GoTo 0 'pokračovat v normálním zpracování chyb If oApp Is Nothing Then' není schopen vytvořit aplikaci MsgBox "Aplikace není k dispozici!", vbExclamation Ukončit If With oApp .Visible = True 'učinit objekt aplikace viditelné 'v tomto místě je aplikace viditelná' udělejte něco v závislosti na aplikaci … Nastavte oDoc = .Documents.Open ("c: \ název_složky \ název_souboru.doc") 'otevřete dokument' … oDoc.Close True 'zavřete a uložte dokument. Ukončete aplikaci End With Set oDoc = Nothing 'free memory Set oApp = Nothing' free memory End Sub

Pozdní vazba

Vazba mezi proměnnou objektu a objektem probíhá při spuštění aplikace.
Výsledkem je pomalejší výkon ve srovnání s tím, kdy probíhá vazba při kompilaci aplikace (časná vazba).
Pokud nepřidáte odkaz na objektovou knihovnu patřící do „cizí“ aplikace, musíte
deklarujte obecné objektové proměnné (např. Dim oDoc jako objekt). Díky tomu bude programování obtížnější
„cizí objekty“, protože VBE nezobrazí stejnou nápovědu k programování, pokud jde o vlastnosti,
metody a události, které zobrazuje pro objekty patřící do aplikace, ze které pracujete.
Toto je obecný příklad kódu:

Sub OLEAutomationLateBinding () 'nahradit xxx jedním z následujících:' Access, Excel, Outlook, PowerPoint nebo Word Dim oApp As Object 'pozdní vazba Dim oDoc As Object' pozdní vazba On Error Resume Next 'ignorovat chyby Nastavit oApp = GetObject (, „xxx.Application“) 'odkaz na existující instanci aplikace Pokud oApp není nic, pak' není spuštěna žádná stávající aplikace Set oApp = CreateObject ("xxx.Application") 'vytvořit novou instanci aplikace Konec Pokud při chybě GoTo 0' pokračovat v normální chybě handling If oApp Is Nothing Then 'not possible to 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 na aplikaci… Nastavit oDoc = .Documents.Open ("c: \ název_složky \ název_souboru.doc") 'otevřít dokument' … oDoc.Close True 'zavřít a uložit dokument .Ukončit' zavřít aplikaci Konec Nastavit oDoc = Nic 'volná paměť Nastavit oApp = Nic' fr ee paměť Konec Sub