Utilizarea Data Objects pentru stocarea și regăsirea informațiilor

După cum ați văzut până acum, puteți stoca informații în multe locuri utilizând VBA. Dar există, de asemenea, un object data util, cu capacitatea de a copia informații în Clipboard și de a le regăsi în Clipboard. Mai jos sunt descrise modurile de comunicare între aplicații; memoria Clipboard este și ea un astfel de mod.

Un obiect de date (data object) este atașat la un obiect UserForm din modelul de obiect Microsoft Forms, dar aveți posibilitatea să utilizați un obiect de date propriu-zis, fără a afișa un formular de utilizator. Acest lucru este similar cu modul în care puteți crea și manipula o bază de date Access ascunsă, fără interfață vizibilă afișată utilizatorului. (Această tehnică este descrisă în secțiunea intitulată "Deschiderea mai multor baze de date simultan" de pe pagina Deschiderea și închiderea bazelor de date.)

Un data object, care este reprezentat în VBA de obiectul DataObject, este utilizat pentru stocarea datelor. Fiecare obiect de date poate deține mai multe informații text și fiecare piesă trebuie să fie într-un format definit. Puteți crea și utiliza mai multe obiecte de date pentru a stoca mai multe bucăți de date în același format sau puteți spune VBA că informațiile sunt într-un format diferit atunci când de fapt nu este așa.

La un moment dat, Clipboard-ul poate conține un element de text și un element în alt format, cum ar fi o imagine. Dacă copiați un alt element text în Clipboard, acel element va suprascrie elementul text anterior, dar orice element grafic din Clipboard va rămâne nevătămat. De asemenea, dacă copiați o imagine în Clipboard, aceasta va suprascrie orice element grafic anterior (sau orice tip de element nontext) stocat în Clipboard, dar elementul text din Clipboard nu va fi afectat.

Data object funcționează într-un mod similar cu Clipboard-ul. Cu toate acestea, un obiect de date nu poate stoca informații grafice. Acesta poate stoca mai multe bucăți de informații text, fiecare definit ca fiind într-un format diferit.

Crearea unui Data Object

Pentru a crea un data object, declarați o variabilă obiect de tipul DataObject și apoi utilizați o instrucțiune Set pentru a atribui un nou obiect DataObject la acesta. De exemplu, următoarele declarații declară o variabilă DataObject denumită myDObj și îi atribuie un nou DataObject:

Dim myDObj As DataObject 
Set myDObj = New DataObject

Stocarea informațiilor într-un Data Object

Pentru a stoca informații într-un obiect de date, utilizați metoda SetText, care are următoarea sintaxă:

object.SetText(StoreData [,format])

Componentele sintaxei sunt următoarele:

  • object este un argument obligatoriu care specifică un obiect valid.
  • StoreData este un argument obligatoriu care specifică datele de stocat în obiectul de date.
  • format este un argument opțional care conține o valoare de tip Integer sau String care specifică formatul informațiilor din StoreData. Valoarea 1 indică formatul text; o valoare diferită de 1 sau un șir indică un format definit de utilizator.

De exemplu, următoarea instrucțiune stochează textul Esantion de text în DataObject numit myDObj:

myDObj.SetText "Esantion de text"

Următoarea instrucțiune stochează textul Esantion de text formatat în DataObject numit myDObj, definind și utilizarea unui format particularizat myFormat:

myDObj.SetText "Esantion de text formatat", "myFormat"

După ce formatul particularizat a fost definit și a fost stocat în obiectul de date, aveți posibilitatea să accesați datele stocate în acest format specificând formatul. În acest caz, nu este implicată de fapt nicio formatare — codul utilizează pur și simplu argumentul format pentru a crea și a identifica datele diferit în obiectul de date, astfel încât noul șir să nu suprascrie șirul de text existent. E un truc.

Returnarea informațiilor din Data Object

Pentru a returna informații dintr-un obiect de date, utilizați metoda GetText a obiectului DataObject. Metoda GetText are următoarea sintaxă::

object.GetText([format])

Componentele sintaxei sunt următoarele:

  • object este un argument obligatoriu care specifică un obiect valid.
  • format este un argument opțional care conține un String sau un Integer care specifică formatul datelor de regăsit.

De exemplu, următoarea instrucțiune afișează o casetă de mesaj care conține șirul de text simplu stocat în dataobject numit myDObj:

MsgBox myDObj.GetText

Următoarea instrucțiune atribuie variabilei de tip String numită strTemp textul stocat cu formatul myFormat în DataObject numit myDObj:

strTemp = myDObj.GetText("myFormat")

Iată un exemplu de cod de lucru care ilustrează modul de creare a unui obiect de date și apoi îl utilizează pentru a stoca și prelua informații. Mai întâi, alegeți Tools > References din Editor pentru a vă asigura că este bifată caseta de selectare de lângă Microsoft Forms 2.0 Object Library. Rețineți că este probabil ca această bibliotecă să nu se afle în locația alfabetică corectă din lista de biblioteci din caseta de dialog References. În schimb, acesta ar putea fi deja bifată și adusă în primele biblioteci din partea de sus a listei de referințe. După selectarea unei biblioteci, aceasta se mută în partea de sus a listei.

Tastați acest exemplu de lucru în editorul VBA al unei aplicații și apăsați F5 pentru a-l vedea executat:

Sub StoreText()
Dim myDObj As DataObject 
Set myDObj = New DataObject 
myDObj.SetText "Sir de text eșantion"
MsgBox myDObj.GetText
End Sub

Asocierea informațiilor la Clipboard

Pentru a atribui text memoriei Clipboard dintr-un data object, utilizați metoda PutInClipboard a DataObject. De exemplu, următorul exemplu creează un nou data object numit myDO, atribuie la acesta textul Nasta Louise Gomes, și apoi atribuie acel text la Clipboard:

Sub ManageClipboard()
Dim myDO As New MSForms.DataObject
myDO.SetText "Nasta Gomes" 
myDO.PutInClipboard
myDO.GetFromClipboard 
MsgBox myDO.GetText
End Sub

Pentru a prelua orice informații text din Clipboard și a le stoca într-un data object, utilizați metoda GetFromClipboard a obiectului DataObject. Exemplul anterior utilizează data object la care face referire variabila myDO, îi atribuie textul din Clipboard, apoi afișează textul.

Pentru a returna informațiile formatate din Clipboard și a le stoca într-un obiect de date, utilizați metoda GetFormat a obiectului DataObject.

Cum se poate afla dacă un obiect de date conține un anumit format

Pentru a afla dacă un obiect de date conține un anumit format, utilizați metoda GetFormat a obiectului DataObject. Sintaxa pentru metoda GetFormat este:

object.GetFormat(format)

Iată componentele sintaxei::

  • object este un argument obligatoriu care returnează un obiect DataObject valid.
  • format este un Integer sau String care specifică formatul pe care îl căutați. Dacă DataObject conține formatul, GetFormat returnează True; dacă nu, GetFormat returnează False.

De exemplu, următoarele instrucțiuni verifică pentru a vedea dacă DataObject numit myDO conține formatul myHTML și, în caz afirmativ, atribuie conținutul formatului la șirul strHTMLText:

If myDO.GetFormat("myHTML") = True Then _
  strHTMLText = myDO.GetText(Format:="myHTML")