Proslijedite bilo koje podatke između VBA aplikacija pomoću međuspremnika

  • Brian Curtis
  • 0
  • 2134
  • 429
Oglas

Taman kad sam pomislio da sam završio s mojom najnovijom grupom savjeta i trikova VBA Kako poslati e-poštu s Excel proračunske tablice pomoću VBA skripti Kako poslati e-poštu s Excelove proračunske tablice koristeći VBA skripte. Naš predložak koda pomoći će vam da postavite automatizirane e-poruke s u programu Excel koristeći objekte podataka kolaboracije (CDO) i VBA skripte. , Otkrio sam još jednu odlicnu tehniku ​​koju svatko može koristiti za jednostavno prenošenje informacija između dvije aplikacije koje koriste VBA kao pomoćni skriptni jezik.

Stvar je sjajna kod VBA je da vam nudi toliko značajki i alata 3 načina za otvaranje aplikacija i Windows maksimiziranog sa VB skriptu [Windows] 3 načina za otvaranje aplikacija i maksimaliziran s VB skriptu [Windows] Ako postoji ono što volim raditi, to je pisanje VB skripti. Bilo da se radi o datoteci Windows Script ili VBA skriptu unutar aplikacije, skriptiranje pruža mogućnost dodavanja funkcionalnosti aplikacijama ... koje su obično dio VB aplikacija, iako u donekle zakinutoj verziji.

Jedan od najfrustriranijih dijelova rada s VBA unutar određenih aplikacija je taj što nije jednostavno dobiti dvije aplikacije “razgovor” jedno drugom. To je zato što su sve varijable koje koristite dostupne samo u okviru same aplikacije, a ne nigdje drugdje na računalu.

Uz to rečeno, tu su Načini prijenosa informacija Kako integrirati Excelove podatke u Wordov dokument Kako integrirati Excel podatke u Wordov dokument tijekom radnog tjedna vjerojatno ćete često presnimavati i kopirati podatke iz Excela u Word ili na drugi način oko. Ovako ljudi često stvaraju pismena izvješća ... između aplikacija utemeljenih na VBA, kao što su Word ili Excel. U mnogim slučajevima, čak i u profesionalnom okruženju, programeri pribjegavaju komunikaciji između aplikacija s datotekama podataka. To može uspjeti, ali uvodi element potencijalnog varanja ili pogreške - poput brisanja ili izmjene tih datoteka - da bi zabrljao radove.

Drugi pristup koji možete isprobati za vrlo brze transakcije informacija između aplikacija je prenošenje podataka u međuspremnik, a zatim čitanje tih podataka iz druge aplikacije.

Prijenos podataka pomoću međuspremnika

U ovom primjeru pokazat ću vam kako proslijediti tri dijela tekstualnih informacija - vrijednosti unutar 3 tekstualna polja - izravno u Excel proračunsku tablicu koju pokreće makro Word.

Početno postavljanje je prikazano u nastavku. Riječ je o dokumentu programa Word gdje sam prešao u način dizajniranja i stvorio 3 oznake i 3 tekstna polja kako bi korisnik upisao informacije. Klik na “podnijeti” gumb će pokrenuti kod za prijenos podataka.

Dvaput kliknite novi gumb koji ste stvorili u načinu dizajna da biste ušli u ekran VB uređivača. Prvo što ćete htjeti učiniti je dodati referencu koja vam daje pristup međuspremniku sustava. Kliknite na Alati - Reference.

Pomičite se prema popisu referenci prema dolje i odaberite “Microsoft Forms 2.0 biblioteka objekata”. Nakon što kliknete U redu, vaša sesija uređivanja VB-a sada ima pristup metodama koje omogućuju čitanje ili pisanje iz međuspremnika..

To je upravo ono što ćemo sada učiniti. U funkciji za “podnijeti” gumb, upisao sam slijedeći kod.

Dim strClipText Kao DataObject Dim strInputText Kao String Dim ERRCODE kao cjelina Set strClipText = New DataObject strInputText = ThisDocument.txtBox1.Value & "" & ThisDocument.txtBox2.Value & "" & ThisDocument.txtBox3.Value strClipText.SetText strInputText strClipText. PutInClipboard 'Postavi objWB = objExcel.Workbooks.Open ("c: /temp/MyExcelFile.xlsm") errCode = Shell ("C: \ Programske datoteke (x86) \ Microsoft Office \ Office12 \ excel.exe c: / temp / MyExcelFile .xlsm ")

Vidite kako je to jednostavno? Objekt podataka strClipText objekt je međuspremnik koji možete manipulirati. Prvo pročitajte sve vrijednosti polja u jednoj varijabli niza, a svako podatkovno polje je ograničeno zarezom ili što god radi za vas.

Zatim ćete trebati stvoriti Excel datoteku koju otvarate u gornjoj naredbi Shell. U Excelu ćete htjeti dodati istu referencu “Microsoft Forms 2.0 biblioteka objekata”, a zatim u funkciji Workbook.Open () možete pokrenuti sljedeću skriptu.

Dim msObj As MSForms.DataObject Dim strText As String Dim strResult () As String Dim intArrayCount As Integer Dim x As Integer Set msObj = New MSForms.DataObject msObj.GetFromClipboard strText = msObj.GetText ("Split" (Split) ) intArrayCount = Application.CountA (strResult) Za x = 0 Za intArrayCount - 1 ThisWorkbook.Sheets ("Sheet1"). ćelije (x + 1,2) .Value = strResult (x) Dalje

Kad opet prođete kroz to, ovo je jednostavan i vrlo brz scenarij. Stvara objekt MSForms i dobiva najnovije podatke iz međuspremnika i smješta ih u varijablu niza. Zatim dijeli tu jednostruku, dugu niz varijable po bilo kojem razgraničenju koji ste koristili u nizu pojedinih nizova i na kraju koraka kroz niz (CountA vam daje duljinu polja) i svaku vrijednost ispisuje na listu u stupcu 2.

Evo konačnih rezultata.

Sada, s malo kreativnosti, možete koristiti ovu tehniku ​​za pokretanje bilo koje aplikacije utemeljene na VBA i “zalijepiti” informacije u nju.

Uvijek možete učiniti isto koristeći Excel referentnu biblioteku, ali u tom slučaju biste tiho otvorili Excel datoteku i manipulirali podacima unutar te datoteke. U gornjem slučaju, doslovno otvarate Excel aplikaciju i prikazujete datoteku, a preostali posao dopuštate pokretanju Makronaredbe u Excelu..

Ovo je najkorisnije kad postoje i druge aplikacije, poput mnogih aplikacija za korisničko sučelje u mnogim proizvodnim pogonima, koje se temelje na VBA, ali možda te knjižnice nemaju na raspolaganju za čvrsto povezivanje dviju aplikacija. Korištenje međuspremnika na automatizirani način poput ovog je brzo, jednostavno i posao je dovršen.

Isprobajte skripte iznad i recite nam kako to funkcionira na vašem sustavu. Jeste li ga morali natezati? Imate li prijedloge kako kôd učiniti još boljim? Podijelite svoje misli u odjeljku s komentarima u nastavku.

Kreditna slika: Slika za prijenos datoteke putem Shutterstocka




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.