Alle informatie doorgeven tussen VBA-applicaties via het klembord
Net toen ik dacht dat ik klaar was met mijn laatste batch VBA-tips en -tricks Hoe e-mails verzenden vanuit een Excel-spreadsheet VBA-scripts gebruiken Hoe e-mails verzenden vanuit een Excel-spreadsheet VBA-scripts gebruiken Met onze codesjabloon kunt u geautomatiseerde e-mails instellen van in Excel met behulp van Collaboration Data Objects (CDO) en VBA-scripts. Lees meer, ik heb nog een hele leuke techniek ontdekt die iedereen kan gebruiken om eenvoudig informatie door te geven tussen twee applicaties die VBA als een back-end scriptingtaal gebruiken.
Het mooie aan VBA is dat het je zoveel functies en tools biedt. 3 manieren om applicaties te openen en Windows gemaximaliseerd met VB Script [Windows] 3 manieren om applicaties te openen en Windows gemaximaliseerd met VB Script [Windows] Als er een is wat ik graag doe, het zijn VB-scripts schrijven. Of het nu gaat om een Windows Script-bestand of een VBA-script in een applicatie, scripting biedt de mogelijkheid om functionaliteit toe te voegen aan applicaties ... Read More die normaal deel uitmaken van VB-applicaties, zij het in een enigszins verwaterde versie.
Een van de meest frustrerende aspecten van het werken met VBA in specifieke toepassingen, is dat het niet altijd gemakkelijk is om twee applicaties te krijgen “praten” naar elkaar. Dit komt omdat alle variabelen die u gebruikt alleen toegankelijk zijn binnen het bereik van de toepassing zelf, niet van elders op de computer.
Met dat gezegd, daar zijn manieren om informatie door te geven Excel-gegevens integreren in een Word-document Excel-gegevens integreren in een Word-document Tijdens uw werkweek zijn er waarschijnlijk heel vaak dat u informatie uit Excel in Word kopieert en plakt, of andersom in de omgeving van. Dit is hoe mensen vaak geschreven rapporten produceren ... Lees meer tussen VBA-gebaseerde applicaties zoals Word of Excel. In veel gevallen, zelfs in een professionele omgeving, gebruiken programmeurs de communicatie tussen applicaties met databestanden. Dit kan werken, maar het introduceert een element van mogelijk knoeien of fouten maken - zoals het verwijderen of wijzigen van die bestanden - om de werken te verknoeien.
Een andere benadering die u kunt proberen voor zeer snelle transacties van informatie tussen applicaties is het doorgeven van gegevens aan het klembord en vervolgens die informatie uit de andere toepassing te lezen.
Informatie doorgeven met behulp van het klembord
In dit voorbeeld laat ik u zien hoe u drie stukjes tekstinformatie - waarden in 3 tekstvelden - rechtstreeks doorgeeft aan een Excel-spreadsheet die de Word-macro lanceert.
De startconfiguratie wordt hieronder getoond. Het is een Word-document waarin ik naar de ontwerpmodus ben gegaan en 3 labels en 3 tekstvelden heb gemaakt voor de gebruiker om informatie in te voeren. Klik op de “voorleggen” knop start de gegevensoverdrachtcode.
Dubbelklik op de nieuwe knop die u in de Ontwerpmodus hebt gemaakt om in het VB-bewerkerscherm te komen. Het eerste dat u gaat doen, is de referentie toevoegen die u toegang geeft tot het klembord van het systeem. Klik op Extra - Verwijzingen.
Blader door de lijst met verwijzingen en selecteer “Microsoft Forms 2.0 Objectbibliotheek”. Zodra u op OK klikt, heeft uw VB-bewerkingssessie nu toegang tot de methoden waarmee u vanaf het klembord kunt lezen of schrijven.
Dat is precies wat we nu gaan doen. In de functie voor de “voorleggen” knop, ik heb de volgende code ingevoerd.
Dim strClipText Als DataObject Dim strInputText As String Dim errCode Als geheel getal Set strClipText = Nieuw DataObject strInputText = ThisDocument.txtBox1.Value & "," & ThisDocument.txtBox2.Value & "," & ThisDocument.txtBox3.Value strClipText.SetText strInputText strClipText. PutInClipboard 'Set objWB = objExcel.Workbooks.Open ("c: /temp/MyExcelFile.xlsm") errCode = Shell ("C: \ Program Files (x86) \ Microsoft Office \ Office12 \ excel.exe c: / temp / MyExcelFile .xlsm ")
Zie hoe eenvoudig het is? Het strClipText-gegevensobject is het klembordobject dat u kunt manipuleren. Lees eerst alle veldwaarden in een enkele reeksvariabele, met elk gegevensveld gescheiden door een komma, of wat voor u werkt.
Vervolgens moet u het Excel-bestand maken dat u opent in de bovenstaande Shell-opdracht. In Excel wil je dezelfde verwijzing toevoegen aan “Microsoft Forms 2.0 Objectbibliotheek”, en vervolgens in de functie Workbook.Open () kunt u het volgende script uitvoeren.
Dim MSObj As MSForms.DataObject Dim strText As String Dim strResult () As String Dim intArrayCount As Integer Dim x Als Integer Set msObj = Nieuw MSForms.DataObject msObj.GetFromClipboard strText = msObj.GetText strResult () = Split (strText, "," ) intArrayCount = Application.CountA (strResult) voor x = 0 voor intArrayCount - 1 ThisWorkbook.Sheets ("Sheet1"). Cellen (x + 1, 2) .Waarde = strResultaat (x) Volgende
Nogmaals, als je er doorheen gaat, is dit een eenvoudig en zeer snel script. Het maakt het object MSForms en haalt de meest recente gegevens op van het klembord en plaatst dit in een tekenreeksvariabele. Vervolgens wordt die enkele lange tekenreeksvariabele gesplitst met het scheidingsteken dat u in een reeks afzonderlijke tekenreeksen hebt gebruikt en tenslotte doorloopt u de reeks (CountA geeft u de lengte van de matrix) en voert elke waarde uit naar het blad in kolom 2.
Dit zijn de eindresultaten.
Nu, met een beetje creativiteit, kun je deze techniek gebruiken om elke VBA-gebaseerde applicatie te starten en “pasta” informatie erin.
Je zou altijd hetzelfde kunnen doen met de Excel-referentiebibliotheek, maar in dat geval zou je het Excel-bestand stilletjes openen en de gegevens in dat bestand manipuleren. In het bovenstaande geval opent u letterlijk de Excel-toepassing en geeft u het bestand weer, en laat de opstartmacro in Excel de rest van het werk doen.
Dit is vooral handig wanneer er andere toepassingen zijn, zoals veel van de operatorinterfacetoepassingen in veel productiefaciliteiten, die gebaseerd zijn op VBA, maar mogelijk niet die bibliotheken hebben om de twee applicaties nauw met elkaar te verbinden. Het gebruik van het klembord op een geautomatiseerde manier zoals dit is snel, gemakkelijk en krijgt de klus geklaard.
Geef de scripts een voor een en laat ons weten hoe het werkt op uw systeem. Moest je het aanpassen? Heeft u suggesties voor het nog beter maken van de code? Deel uw mening in de commentarensectie hieronder.
Beeldcredits: Bestandsoverdracht via Shutterstock
Ontdek meer over: Microsoft Excel, Microsoft Word, Programming, Spreadsheet, Visual Basic Programming.