
Brian Curtis
0
2134
429
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