Passa eventuell information mellan VBA-program med Urklipp

Passa eventuell information mellan VBA-program med Urklipp / Windows

Precis när jag trodde att jag var klar med mitt senaste parti VBA-tips och tricks Hur skickar du e-postmeddelanden från ett Excel-kalkylblad med VBA-skript Hur skickar du e-post från ett Excel-kalkylblad med VBA-skript Vår kodmall hjälper dig att ställa in automatiserade e-postmeddelanden från inom Excel med hjälp av Collaboration Data Objects (CDO) och VBA-skript. Läs mer, upptäckte jag ännu en mer riktigt cool teknik som alla kan använda för att enkelt skicka information mellan två program som använder VBA som back-end skriptspråk.

Det som är bra om VBA är att det ger dig så många funktioner och verktyg 3 sätt att öppna applikationer och Windows maximeras med VB Script [Windows] 3 sätt att öppna applikationer och Windows maximeras med VB Script [Windows] Om det finns en sak jag älskar att göra, det är skrivet VB-skript. Oavsett om det är en Windows Script-fil eller ett VBA-skript i en applikation, ger skript möjligheten att lägga till funktionalitet för program ... Läs mer som normalt ingår i VB-applikationer, om än i en något vattnad version.

En av de mest frustrerande delarna av att arbeta med VBA inom specifika applikationer är att det inte alltid är lätt att få två applikationer till “prata” till varandra. Detta beror på att alla variabler som du använder endast är tillgängliga inom ramen för själva appen, inte från någon annanstans på datorn.

Med det sagt, där är sätt att skicka information Hur man integrerar Excel-data i ett Word-dokument Hur man integrerar Excel-data i ett Word-dokument Under din arbetsvecka finns det förmodligen många gånger som du hittar dig själv att kopiera och klistra in information från Excel till Word, eller å andra sidan runt. Så här producerar man ofta skrivna rapporter ... Läs mer mellan VBA-baserade applikationer som Word eller Excel. I många fall, även i en professionell miljö, programmerar programmerare att kommunicera mellan applikationer med datafiler. Det här kan fungera, men det introducerar ett element av potentiell manipulering eller fel - som borttagning eller modifiering av dessa filer - för att förstöra arbeten.

Ett annat tillvägagångssätt som du kan försöka för mycket snabba transaktioner med information mellan program skickar data till klippbordet och sedan läser den informationen från den andra applikationen.

Skickar information med Urklipp

I det här exemplet kommer jag att visa dig hur du ska skicka tre bitar textinformation - värden i 3 textfält - direkt till ett Excel-kalkylblad som Word-makroet lanserar.

Startinställningen visas nedan. Det är ett Word-dokument där jag bytte till Design Mode och skapade 3 etiketter och 3 textfält för användaren att skriva in information. Klicka på “Lämna” knappen startar dataöverföringskoden.

Dubbelklicka på den nya knappen du skapat i Design Mode för att komma in på VB Editor-skärmen. Det första du vill göra är att lägga till referensen som ger dig tillgång till systemklippet. Klicka på Verktyg - Referenser.

Bläddra ner listan över referenser och välj “Microsoft Forms 2.0 Object Library”. När du klickar på Ok, har din VB-redigeringsession nu tillgång till de metoder som låter dig läsa eller skriva från urklippet.

Det är precis vad vi ska göra nu. I funktionen för “Lämna” knappen, jag har angivit följande kod.

Dim strClipText Som DataObject Dim StrInputText Som String Dim ErrCode Som Integer Ställ StrClipText = Ny DataObject StrInputText = ThisDocument.txtBox1.Value & "," & ThisDocument.txtBox2.Value & "," & ThisDocument.txtBox3.Value strClipText.SetText strInputText strClipText. PutInClipboard 'Ange objWB = objExcel.Workbooks.Open ("c: /temp/MyExcelFile.xlsm") errCode = Shell ("C: \ Programfiler (x86) \ Microsoft Office \ Office12 \ excel.exe c: / temp / MyExcelFile .xlsm ")

Se hur enkelt det är? StrClipText-dataobjektet är det urklippsobjekt som du kan manipulera. Läs först i alla fältvärden i en enda strängvariabel, med varje datafält avgränsat med ett komma eller vad som helst för dig.

Därefter måste du skapa Excel-filen som du öppnar i Shell-kommandot ovan. I Excel kommer du att vilja lägga till samma referens till “Microsoft Forms 2.0 Object Library”, och sedan i funktionen Workbook.Open () kan du köra följande skript.

Dim msObj Som MSForms.DataObject Dim strText Som String Dim strResult () Som String Dim IntArrayCount Som Integer Dim x As Integer Set msObj = New MSForms.DataObject msObj.GetFromClipboard strText = msObj.GetText strResult () = Split (strText, "," ) intArrayCount = Application.CountA (strResult) För x = 0 Till intArrayCount - 1 ThisWorkbookSheets ("Sheet1"). Celler (x + 1, 2) .Value = strResultat (x) Nästa

Återigen, när du går igenom det, är detta ett enkelt och väldigt snabbt manus. Det skapar MSForms-objektet och får de senaste data från urklippet och placerar det i en strängvariabel. Sedan splittrar den den enda långsträngsvariabeln med vilken avgränsning som helst som du använde i en rad enskilda strängar, och slutligen steg den genom matrisen (CountA ger dig längden på arrayen) och matar ut varje värde till arket i kolumn 2.

Här är de slutliga resultaten.

Nu, med lite kreativitet kan du använda denna teknik för att starta alla VBA-baserade applikationer och “klistra” information till den.

Du kan alltid göra samma sak med Excel-referensbiblioteket, men i det fallet öppnar du tyst Excel-filen och manipulerar data i den filen. I det ovanstående fallet öppnar du bokstavligt Excel-programmet och visar filen, och låter start Macro i Excel göra resten av arbetet.

Det här är mest användbart när det finns andra applikationer, som många av operatörsgränssnittsapplikationerna i många tillverkningsanläggningar, som är baserade på VBA, men kanske inte har de bibliotek som är tillgängliga för att strikt koppla de två applikationerna. Att använda klippbordet på ett automatiserat sätt som detta är snabbt, enkelt och får jobbet gjort.

Ge skript ovanför ett försök och låt oss veta hur det fungerar på ditt system. Måste du tweak det? Har du några förslag på hur du gör koden ännu bättre? Dela dina tankar i kommentarfältet nedan.

Bildkredit: Filöverföringsbild via Shutterstock

Utforska mer om: Microsoft Excel, Microsoft Word, Programmering, Kalkylark, Visual Basic Programmering.