Crearea unei aplicații în vba pentru a accesa pentru a automatiza formarea contractelor în cuvânt

De exemplu, aplicația Microsoft Access poate utiliza de automatizare cu aplicatia Microsoft Word ca un server pentru a crea un nou document Word. Prin crearea unui astfel de document (de exemplu, un nou obiect Word. Document), program de acces are acces la multe dintre proprietățile sale pentru a adăuga text și formatul, și salvați fișierul cu un anumit nume. Rezultatul va fi crearea unui fișier document Word (cu extensia .doc) din mediul aplicației de acces.







Automatizarea nu transferă obiecte de la o aplicație la alta. În schimb, permite unei aplicații să gestioneze obiecte create de o altă aplicație. Și aceasta este principala lor diferență. De exemplu, dacă utilizați Microsoft Word ca server de automatizare, atunci utilizatorul trebuie să aibă instalată această aplicație pe computerul său. În același timp, utilizatorul nu trebuie să ruleze aplicația și să o manipuleze manual - programul de automatizare o va face pentru el.

3.2 Crearea de referințe la obiecte

Clienții de automatizare au nevoie de o modalitate de a determina ce obiecte dintr-un anumit server de automatizare pot folosi în activitatea lor. Aceste informații sunt stocate în fișiere numite biblioteci de tip, care de obicei au extensii .tlb sau .olb. Bibliotecile de tip conțin informații despre:

În ciuda faptului că utilizarea obiectelor de pe serverul de automatizare nu necesită neapărat prezența unei biblioteci de tip, va fi un ajutor bun. Se recomandă să utilizați întotdeauna biblioteca de tip. Pentru a utiliza aceeași bibliotecă de tip atunci când le automatizați, trebuie să configurați referințe.

Figura 3.1 - Adăugarea de referințe la bibliotecile de tip

  1. În listă găsim elementul Microsoft Word 12.0 Object Library și bifați caseta.
  2. Facem click pe butonul OK, iar referințele la aceste biblioteci de tip vor fi adăugate la baza de date curentă din Access.

După ce se adaugă referințele la bibliotecile de tip, puteți găsi obiectele în "Object Explorer". Pentru a porni acest browser, trebuie să apăsați tasta F2. După aceea, selectați biblioteca de tip dorită în lista combinată Project / Library.

3.3 Crearea de obiecte pe serverul de automatizare

Pentru a lucra cu obiecte dintr-o altă aplicație, acestea trebuie mai întâi create în textul programului de acces. Există trei moduri de implementare a acestei operațiuni:

  • utilizați funcția CreateObjest;
  • utilizând funcția GetObject;
  • utilizați legarea timpurie.

3.3.1 Utilizarea funcției CreateObject

Funcția CreateObject vă permite să definiți un obiect după numele său și să creați o instanță a acestuia. Iată un scurt exemplu de utilizare:

"Folosirea Word ca server de automatizare

"folosind funcția CreateObject

Dim obiect ca obiect

Setați objWord = CreateObject ("Word Application")

În acest exemplu, o variabilă a unui obiect de tip special este folosită pentru a se referi la obiectul creat. Acesta este un tip de variabile care pot face referire la orice obiecte: un document Word, o diagramă Excel, un formular de acces.

Funcția CreateObject convertește o variabilă de obiect generalizată la un anumit tip de obiect. Argumentul pentru funcția CreateObject este ceea ce se numește ProgID (identificator de obiect). Aceasta este o valoare unică asociată tipului de obiect creat. Cele mai multe identificatori de obiecte pot fi obținute prin combinarea numelui aplicației cu numele obiectului său. Deci, identificatorul Word.Application corespunde obiectului Application al aplicației Word (și nu obiectului aplicației Application propriu).

După ce linia programului cu apelul la funcția CreateObject a funcționat, variabila objWord se referă deja la o instanță a obiectului Application al aplicației Word. Acest obiect este o sesiune de lucru cu Microsoft Word (precum și obiectul Application al aplicației Access reprezintă sesiunea de lucru cu aceasta din urmă). Cu toate acestea, dacă setați punctul de control pe această linie și opriți în acest moment, nicăieri nu există o aplicație Word care rulează. Acest lucru se datorează faptului că Word, precum și cele mai multe servere de automatizare, rulează în modul invizibil atunci când sunt chemați de la programul de automatizare. În următorul rând al programului, proprietatea Vizibilitate a Word este setată la True, ceea ce face ca fereastra aplicației să fie afișată pe ecran.







În cele din urmă, se apelează metoda Quit a obiectului Application al aplicației Word. Acesta este echivalentul numelui comenzii "Ieșire" din meniul "Fișier".

În plus față de noua funcție CreateObject, în acest exemplu nu există o sintaxă nouă. După extragerea obiectului de automatizare, proprietățile și metodele sale pot fi utilizate în același mod ca și în orice obiect Access.

3.3.2 Utilizarea funcției GetObject

Funcția GetObject este foarte aproape de funcția CreateObject. Iată un exemplu de utilizare:

"Folosirea Word ca server de automatizare

"utilizând funcția GetObject

Dim obiect ca obiect

Setați objWord = GetObject ("", "Word.Application")

Dacă executați această procedură, atunci vom descoperi că funcționează exact ca CreateObjectDemo. În același timp, există două diferențe semnificative între funcțiile CreateObject și GetObject:

  • Funcția CreateObject creează întotdeauna o nouă instanță a serverului de automatizare. Funcția GetObject poate utiliza instanța care rulează deja în sistem.
  • Funcția GetObject are primul parametru opțional care specifică documentul. Dacă denumești, după cum urmează: GetObject ( «o: \ temp \ doc1.doc», «Word.Application»), apoi, dacă este necesar, se va crea o instanță a Aplication, iar această aplicație va fi descărcat documentul în fișierul dat.

Funcția GetObject este cel mai bine utilizat atunci când aveți nevoie pentru a lucra cu un document specific, sau atunci când se confruntă cu problema de a minimiza influența aplicarea de automatizare pe implicate în resursele sistemului (acest lucru este valabil mai mult pentru sisteme de computere cu resurse de memorie limitate), la fel ca în acest caz, câteva exemplare suplimentare nu va porni aplicații de server de automatizare.

3.3.3 Utilizarea legăturii timpurii

Funcțiile CreateObject și GetObject utilizează ceea ce se numește programarea întârziată. La întârzierea legării în textul programului nu este specificat în mod explicit ce tip de obiect va fi folosit. În schimb, se utilizează un obiect de tip obiect general, iar interpretul VBA decide în ceea ce privește execuția ce tip de obiect să creeze. Cea de a treia modalitate de a crea obiecte este de a utiliza legarea timpurie, ceea ce vă permite să aplicați tipurile de native ale variabilelor serverului de automatizare direct în codul VBA.

Următorul este un exemplu de creare a unui obiect convertit într-o metodă de legare timpurie:

"Folosirea Word ca server de automatizare

"prin legarea timpurie

Dim objWord ca Word.Application

Setați objWord = New Word.Application

Se recomandă utilizarea legării rapide din mai multe motive:

  • Nu trebuie să vă amintiți două sintaxe diferite pentru crearea obiectelor.
  • Obținem toate beneficiile mecanismului IntelliSense atunci când scrieți un program, ceea ce înseamnă că va fi posibil să se identifice erorile înainte de a găsi programe de utilizator.
  • Legarea timpurie funcționează mai rapid decât funcțiile CreateObject și GetObject.

3.4 Interacțiunea cu aplicația Word

Aplicația Access are multe avantaje, dar nu oferă instrumente bune pentru crearea de contracte care conțin text arbitrar și formatare. Cu ajutorul instrumentelor de automatizare, această limitare este ușor evitată: aplicația Microsoft Word este ideală pentru crearea unui contract profesional, această aplicație poate fi selectată ca un server de automatizare.

Creați un simplu formular de acces care vă permite să introduceți text și nume de fișier arbitrar. În acest formular, creați butonul "Creați un document Word". După ce faceți clic pe buton, se creează un document care conține textul introdus și salvat sub numele introdus în câmpul de text inferior al formularului.

Textul procedurii de procesare a clicului unui buton este destul de simplu:

Private Sub cmdCreate_Click ()

"Copiați textul în documentul Word

Dim objWord ca Word.Application

Inițiați cuvântul și un document nou

Setați objWord = New Word.Application

'Introduceți text după regiunea implicită

"Acesta este începutul documentului

objWord.ActiveDocument.Range. InsertAfter (txtText.Value)

"Salvați fișierul

"și afișați-o

Singura dificultate în această sarcină este necesitatea unei bune cunoașteri a modelului obiect Word pentru a face să facă ceea ce are nevoie. Acțiunile cheie sunt crearea unui document și adăugarea de text la acesta. Pentru a crea un document, a fost apelată metoda de adăugare a colecției Documente. Adăugarea textului este o sarcină puțin mai complicată. Documentele Word conțin un obiect Range care reprezintă zona de text selectată în prezent. Obiectul Range are o mulțime de metode pentru adăugarea de text, inclusiv InsertAfter și InsertBefore. Odată ce documentul a fost creat, nu există niciun text în acesta, astfel încât obiectul Range să îndrepte doar spre începutul documentului. Introducerea textului după acest punct îl lipim de la începutul documentului - exact ceea ce aveți nevoie.

4 Exemplu de creare a unei aplicații pentru automatizarea formării contractelor

  1. Crearea unei baze de date și a tabelelor necesare:

Porniți Microsoft Access și selectați "Creare" din meniul "Fișier". În fereastra "Creați un fișier", selectați "Bază de date nouă". Salvați baza de date creată. În acest exemplu, baza de date va fi localizată în directorul rădăcină al unității C: și se va numi Dogovors.mdb. În fereastra bazei de date care se va deschide, accesați fila "Tabele" și faceți dublu clic pe "Creați un tabel în vizualizarea Design". În tabelul creat, definim trei coloane (Figura 4.1).

Figura 4.1 - Structura tabelului "Șabloane"

Salvăm acest tabel ca "Șabloane" și închidem fereastra constructorului. În fereastra bazei de date, în fila "Tabele", faceți clic din nou pe rândul "Creați tabelul în vizualizarea de proiectare". Coloana setată pentru noul tabel ar trebui să arate astfel:

Text (cheie primară)







Articole similare

Trimiteți-le prietenilor: