Informații de bază despre automatizarea OLE utilizând VBA în Microsoft Excel

Anonim

Când doriți să utilizați funcționalitatea din alte aplicații, trebuie să decideți dacă doriți să utilizați
legarea timpurie sau tardivă a variabilelor obiect.

Legare timpurie

Legarea dintre variabila obiect și obiect are loc atunci când aplicația este compilată.
Acest lucru are ca rezultat o performanță mai bună în comparație cu momentul în care legarea are loc atunci când aplicația este rulată (legarea tardivă).
Dacă doriți să creați o legare timpurie, trebuie să setați o referință la biblioteca de obiecte „străine” pe care doriți să o utilizați.
Acest lucru se face din VBE utilizând meniul Instrumente, Referințe…. Când un VBProject are o referință la un
bibliotecă de obiecte puteți declara anumite variabile de obiect (de exemplu, Dim oDoc ca Word.Document). Acest lucru o va face și ea
mai ușor de programat „obiectele străine”, deoarece VBE va afișa același ajutor de programare cu privire la proprietăți,
metodele și evenimentele pe care le afișează pentru obiectele aparținând aplicației pe care lucrați
de la (VBE a adăugat automat referința la această aplicație în avans).
Acesta este un exemplu de cod general care arată eroarea de automatizare vba:

Sub OLEAutomationEarlyBinding () 'înlocuiți xxx cu unul dintre următoarele:' Access, Excel, Outlook, PowerPoint sau Word Dim oApp As xxx.Application 'early binding Dim oDoc As xxx.Document' Excel.Workbook, Outlook.MailItem, PowerPoint.Presentation , Word. o nouă instanță de aplicație Închideți dacă este pornit eroarea GoTo 0 'reluați tratarea normală a erorilor Dacă oApp nu este nimic, atunci' nu este capabil să creeze aplicația MsgBox "Aplicația nu este disponibilă!", vbExclamare Închideți dacă cu oApp. vizibil 'în acest moment aplicația este vizibilă' faceți ceva în funcție de aplicație … Setați oDoc = .Documents.Open ("c: \ foldername \ filename.doc") 'deschideți un document' … oDoc.Închideți True 'închideți și salvați documentul .Quit 'închideți aplicația Termină cu Set oDoc = Memorie liberă nimic Setare oApp = Memorie liberă nimic

Legare târzie

Legarea dintre variabila obiect și obiect are loc atunci când aplicația este rulată.
Acest lucru are ca rezultat o performanță mai lentă în comparație cu momentul în care legarea are loc atunci când aplicația este compilată (legarea timpurie).
Dacă nu adăugați o referință la biblioteca obiectelor care aparține aplicației „străine” trebuie să faceți acest lucru
declarați variabilele generale ale obiectului (de exemplu, Dim oDoc ca obiect). Acest lucru va face mai dificilă programarea
„obiectele străine”, deoarece VBE nu va afișa același ajutor de programare cu privire la proprietăți,
metodele și evenimentele pe care le afișează pentru obiectele aparținând aplicației din care lucrați.
Acesta este un exemplu de cod general:

Sub OLEAutomationLateBinding () 'înlocuiți xxx cu unul dintre următoarele:' Access, Excel, Outlook, PowerPoint sau Word Dim oApp Ca obiect 'legare târzie Dim oDoc Ca obiect' legare târzie La eroare Reîncepeți Următorul 'ignorați erorile Set oApp = GetObject (, „xxx.Application”) 'face referire la o instanță de aplicație existentă Dacă oApp is Nothing Atunci „nicio aplicație existentă nu rulează Setați oApp = CreateObject („ xxx.Application ”)' creați o nouă instanță de aplicație End If On Error GoTo 0 'reluați eroarea normală manipularea Dacă oApp nu este nimic, atunci 'nu se poate crea aplicația MsgBox "Aplicația nu este disponibilă!", vbExclamation End If With oApp .Visible = True' face obiectul aplicației vizibil 'în acest moment aplicația este vizibilă' faceți ceva în funcție pe aplicație … Setați oDoc = .Documents.Open ("c: \ foldername \ filename.doc") 'deschideți un document' … oDoc.Închideți True 'închideți și salvați documentul. Nothing 'Free memory Set oApp = Nothing' fr ee memory End Sub