Transmite orice informație între aplicațiile VBA utilizând Clipboard-ul

Transmite orice informație între aplicațiile VBA utilizând Clipboard-ul / ferestre

Doar când m-am gândit că am terminat cu ultimul meu lot de sfaturi și trucuri VBA Cum să trimiteți e-mailuri dintr-o foaie de calcul Excel Folosind script-uri VBA Cum să trimiteți e-mailuri dintr-o foaie de calcul Excel utilizând Scripts VBA Șablonul de cod vă va ajuta să configurați e-mailurile automate de la în cadrul Excel utilizând Collaboration Data Objects (CDO) și scripturile VBA. Citește mai mult, am descoperit încă o tehnică foarte interesantă pe care oricine o poate folosi pentru a transmite cu ușurință informații între două aplicații care utilizează VBA ca limbaj de scripting de back-end.

Ceea ce este minunat despre VBA este că vă oferă atât de multe caracteristici și instrumente 3 Moduri de deschidere a aplicațiilor și Windows maximizate cu VB Script [Windows] 3 moduri de a deschide aplicații și Windows maximizate cu VB Script [Windows] Dacă există una lucru pe care îmi place să-l fac, scriu scripturi VB. Fie că este vorba de un fișier Windows Script sau de un script VBA în cadrul unei aplicații, scripting-ul oferă posibilitatea de a adăuga funcționalitate aplicațiilor ... Citiți mai multe care sunt, în mod normal, parte din aplicațiile VB, deși într-o versiune oarecum dărâmată.

Una dintre părțile cele mai frustrante de a lucra cu VBA în aplicații specifice este că nu este întotdeauna ușor să obțineți două aplicații “vorbi” unul altuia. Acest lucru se datorează faptului că toate variabilele pe care le utilizați sunt accesibile numai în sfera de aplicare a aplicației în sine, și nu de oriunde în altă parte a computerului.

Cu asta a spus, acolo sunteți moduri de transmitere a informațiilor Cum se integrează datele Excel într-un document Word Cum se integrează datele Excel într-un document Word În timpul săptămânii de lucru, există, probabil, o mulțime de ori că vă aflați copiind și inserați informații din Excel în Word sau invers în jurul. Acesta este modul în care oamenii produc adesea rapoarte scrise ... Citiți mai multe între aplicațiile bazate pe VBA, cum ar fi Word sau Excel. În multe cazuri, chiar și într-un mediu profesional, programatorii recurg la comunicarea între aplicații cu fișiere de date. Acest lucru poate funcționa, dar introduce un element de potențială manipulare sau eroare - cum ar fi ștergerea sau modificarea acelor fișiere - pentru a strica lucrările.

O altă abordare pe care o puteți încerca pentru tranzacțiile foarte rapide de informații între aplicații este transmiterea datelor în clipboard și apoi citirea acelor informații din altă aplicație.

Transmiterea informațiilor utilizând Clipboard

În acest exemplu, vă voi arăta cum să treci trei piese de informații text - valori în interiorul a 3 câmpuri de text - direct într-o foaie de calcul Excel pe care o lansează macro-ul Word.

Setarea de pornire este prezentată mai jos. Este un document Word în care am trecut la modul de proiectare și am creat 3 etichete și 3 câmpuri de text pentru ca utilizatorul să introducă informații. Dând clic pe “A depune” butonul va lansa codul de transfer de date.

Faceți dublu clic pe butonul nou creat în modul Design pentru a intra în ecranul VB Editor. Primul lucru pe care doriți să îl faceți este să adăugați referința care vă oferă acces la clipboardul sistemului. Dați clic pe Instrumente - Referințe.

Derulați în jos lista de referințe și selectați “Formularul Microsoft Forms 2.0 Object”. După ce faceți clic pe Bine, sesiunea dvs. de editare VB are acum acces la metodele care vă permit să citiți sau să scrieți din clipboard.

Exact asta vom face acum. În funcția pentru “A depune” butonul, am introdus următorul cod.

Dim strClipText As DataObject Dim strInputText Ca dimensiune String Dim errCode ca set de intregi strClipText = New DataObject strInputText = ThisDocument.txtBox1.Value & "," & ThisDocument.txtBox2.Value & "," & ThisDocument.txtBox3.Value strClipText.SetText strInputText strClipText. PutInClipboard "Setul objWB = objExcel.Workbooks.Open (" c: /temp/MyExcelFile.xlsm ") errCode = Shell (" C: \ Program Files (x86) \ Microsoft Office \ Office12 \ excel.exe c: / temp / MyExcelFile .xlsm ")

Vedeți cât de simplu este? Obiectul de date strClipText este obiectul clipboard pe care îl puteți manipula. Mai întâi, citiți în toate valorile câmpului o variabilă cu un singur șir, cu fiecare câmp de date delimitat cu o virgulă sau altceva care funcționează pentru dvs..

Apoi, va trebui să creați fișierul Excel pe care îl deschideți în comanda Shell de mai sus. În Excel, veți dori să adăugați aceeași referință la “Formularul Microsoft Forms 2.0 Object”, și apoi în funcția Workbook.Open (), puteți rula următorul script.

Dim msObj Ca dimensiune MSForms.DataObject Dim strText Ca String Dim strResult () Ca String Dim intArrayCount ca Integer Dim x Ca Integer Setat msObj = New MSForms.DataObject msObj.GetFromClipboard strText = msObj.GetText strResult () = Împărțire (strText, "," ) intArrayCount = Application.CountA (strResult) Pentru x = 0 Pentru intArrayCount - 1 ThisWorkbook.Sheets ("Sheet1") Celule (x + 1, 2) .Value = strResult

Din nou, atunci când treceți prin ea, acesta este un script simplu și foarte rapid. Creează obiectul MSForms și primește cele mai recente date din clipboard și o plasează într-o variabilă de șir. Apoi, aceasta împarte acea variabilă de șir unică, lungă, indiferent de delimitatorul pe care l-ați folosit într-o serie de șiruri individuale, și în cele din urmă se trece prin matrice (CountA vă dă lungimea matricei) și transmite fiecare valoare în coloana din coloana 2.

Iată rezultatele finale.

Acum, cu un pic de creativitate, puteți utiliza această tehnică pentru a lansa orice aplicație bazată pe VBA și “pastă” informații în el.

Puteți face întotdeauna același lucru folosind biblioteca de referință Excel, dar în acest caz, veți deschide în tăcere fișierul Excel și manipulați datele din fișierul respectiv. În cazul de mai sus, deschideți literalmente aplicația Excel și afișând fișierul și lăsând Macro-ul de pornire în Excel să facă restul lucrării.

Acest lucru este foarte util atunci când există alte aplicații, cum ar fi multe dintre aplicațiile de interfață ale operatorului din multe facilități de producție, care se bazează pe VBA, dar este posibil ca aceste biblioteci să nu fie disponibile pentru a lega strâns cele două aplicații. Utilizarea clipboard-ului într-un mod automatizat, cum ar fi acest lucru este rapid, ușor, și face treaba.

Dați scripturile de mai sus și spuneți-ne cum funcționează sistemul dvs. A trebuit să-l modificați? Aveți sugestii pentru a face codul chiar mai bine? Împărtășiți-vă gândurile în secțiunea de comentarii de mai jos.

Credit de imagine: transfer de imagini prin intermediul Shutterstock

Explorați mai multe despre: Microsoft Excel, Microsoft Word, Programare, Spreadsheet, Programare Visual Basic.