Pass enhver informasjon mellom VBA-applikasjoner ved hjelp av utklippstavlen
Bare da jeg trodde at jeg var ferdig med mitt siste parti VBA tips og triks Hvordan sende e-post fra et Excel-regneark ved hjelp av VBA-skript Hvordan sende e-post fra et Excel-regneark ved hjelp av VBA-skript Vår kodemal hjelper deg med å konfigurere automatiserte e-poster fra innenfor Excel ved hjelp av samarbeidsdataobjekter (CDO) og VBA-skript. Les mer, jeg oppdaget enda en mer veldig kul teknikk som alle kan bruke til å enkelt sende informasjon mellom to applikasjoner som bruker VBA som back-end skriptspråk.
Det som er bra om VBA, er at det gir deg så mange funksjoner og verktøy. 3 måter å åpne programmer og Windows maksimert med VB Script [Windows] 3 måter å åpne programmer og Windows maksimert med VB Script [Windows] Hvis det er en ting jeg elsker å gjøre, det er skrive VB-skript. Enten det er en Windows Script-fil eller et VBA-skript i et program, gir skripting muligheten til å legge til funksjonalitet for applikasjoner ... Les mer som normalt er en del av VB-applikasjoner, om enn i en litt vannet versjon.
En av de mest frustrerende delene av å jobbe med VBA innenfor spesifikke applikasjoner, er at det ikke alltid er lett å få to applikasjoner til “snakke” til hverandre. Dette skyldes at alle variablene du bruker bare er tilgjengelige innenfor selve applikasjonen, ikke fra andre steder på datamaskinen..
Med det sagt, der er måter å overføre informasjon Slik integrerer du Excel-data i et Word-dokument Slik integrerer du Excel-data i et Word-dokument I arbeidsdagen din er det sannsynligvis mange ganger at du finner deg selv å kopiere og lime inn informasjon fra Excel til Word, eller omvendt rundt. Slik produserer folk ofte skrevet rapporter ... Les mer mellom VBA-baserte applikasjoner som Word eller Excel. I mange tilfeller, selv i et faglig miljø, tyder programmerere på å kommunisere mellom applikasjoner med datafiler. Dette kan fungere, men det introduserer et element av potensiell manipulering eller feil - som sletting eller modifisering av disse filene - for å ødelegge arbeidene.
En annen tilnærming du kan prøve for svært raske transaksjoner av informasjon mellom applikasjoner, sender data til utklippstavlen, og leser deretter informasjonen fra den andre applikasjonen.
Passerer informasjon ved hjelp av utklippstavlen
I dette eksemplet skal jeg vise deg hvordan du skal sende tre stykker tekstinformasjon - verdier i tre tekstfelter - direkte til et Excel-regneark som Word-makroen lanserer.
Startoppsettet er vist nedenfor. Det er et Word-dokument der jeg byttet til designmodus og opprettet 3 etiketter og 3 tekstfelter for brukeren å skrive inn informasjon. Klikk på “Sende inn” knappen vil starte dataoverføringskoden.
Dobbeltklikk på den nye knappen du har opprettet i designmodus for å komme inn på VB Editor-skjermbildet. Det første du vil gjøre er å legge til referansen som gir deg tilgang til systemutklippstavlen. Klikk på Verktøy - Referanser.
Rull ned i listen over referanser og velg “Microsoft Forms 2.0 Object Library”. Når du klikker OK, har din VB-redigering nå tilgang til metodene som lar deg lese eller skrive fra utklippstavlen.
Det er akkurat det vi skal gjøre nå. I funksjonen for “Sende inn” knappen, jeg har skrevet inn følgende kode.
Dim strClipText Som DataObject Dim strInputText Som String Dim errCode Som Integer Set strClipText = Ny DataObject strInputText = ThisDocument.txtBox1.Value & "," & ThisDocument.txtBox2.Value & "," & ThisDocument.txtBox3.Value strClipText.SetText strInputText strClipText. PutInClipboard 'Sett objWB = objExcel.Workbooks.Open ("c: /temp/MyExcelFile.xlsm") errCode = Shell ("C: \ Programmer (x86) \ Microsoft Office \ Office12 \ excel.exe c: / temp / MyExcelFile .xlsm ")
Se hvor enkelt det er? StrClipText dataobjektet er utklippstavlen objektet du kan manipulere. Les først i alle feltverdiene i en enkelt strengvariabel, med hvert datafelt avgrenset med et komma, eller hva som helst for deg.
Deretter må du opprette Excel-filen du åpner i Shell-kommandoen ovenfor. I Excel vil du legge til samme referanse til “Microsoft Forms 2.0 Object Library”, og deretter i funksjonen Workbook.Open (), kan du kjøre følgende skript.
Dim msObj Som MSForms.DataObject Dim strText Som String Dim strResult () Som String Dim IntArrayCount Som Integer Dim x Som Integer Set msObj = Ny MSForms.DataObject msObj.GetFromClipboard strText = msObj.GetText strResult () = Split (strText, "," ) intArrayCount = Application.CountA (strResult) For x = 0 Til intArrayCount - 1 ThisWorkbook.Sheets ("Sheet1") .celler (x + 1, 2) .Value = strResultat (x) Neste
Igjen, når du går gjennom det, er dette et enkelt og veldig raskt skript. Den skaper MSForms-objektet og får de nyeste dataene fra utklippstavlen og legger den inn i en strengvariabel. Deretter deler den den ene, lange strengvariabelen uansett avgrenseren du brukte i en rekke individuelle strenger, og til slutt går den gjennom arrayet (CountA gir deg lengden på arrayet) og gir ut hver verdi til arket i kolonne 2.
Her er de endelige resultatene.
Nå, med litt kreativitet, kan du bruke denne teknikken til å starte en VBA-basert applikasjon og “lim inn” informasjon inn i den.
Du kan alltid gjøre det samme ved hjelp av Excel-referansebiblioteket, men i så fall åpner du tydelig Excel-filen og manipulerer dataene i den filen. I det ovennevnte tilfellet åpner du bokstavelig talt Excel-applikasjonen og viser filen, og lar oppstartsmakroen i Excel gjøre resten av arbeidet..
Dette er mest nyttig når det er andre applikasjoner, som mange av operatørgrensesnittapplikasjonene i mange produksjonsanlegg, som er basert på VBA, men kanskje ikke har de tilgjengelige biblioteker for å koble de to programmene tett. Bruke utklippstavlen på en automatisk måte som dette er rask, enkel og får jobben gjort.
Gi skriptene over et forsøk og gi oss beskjed om hvordan det fungerer på systemet ditt. Måtte du finjustere det? Har du forslag til hvordan du gjør koden enda bedre? Del dine tanker i kommentarfeltet nedenfor.
Image Credit: Filoverføringsbilde via Shutterstock
Utforsk mer om: Microsoft Excel, Microsoft Word, Programmering, Regneark, Visual Basic Programmering.