Advertentie
Zou het niet fijn zijn om de mogelijkheid te hebben om gewoon een Excel-spreadsheet of een Word-document te openen, zonder iets te hoeven doen op alle gegevens worden rechtstreeks gelezen uit een tekst- of CSV-gegevensbestand en worden rechtstreeks geladen in een diagram dat is ingesloten in uw spreadsheet of Word document? Dit is een vorm van automatisering met Office-producten, want als het mogelijk is om het in kaart brengen van gegevens in Office te automatiseren, denk dan eens aan de mogelijkheden. U kunt automatisch gegevens in een diagram laden voor een rapport dat u voor uw baas samenstelt - geen gegevensinvoer vereist. Of u kunt gegevens in een diagram rechtstreeks in een e-mail in Outlook laden.
De techniek om dit te bereiken is door de invoegtoepassing Office Web Components te installeren. Bovendien hoeft u slechts een paar dingen in de Office-applicatie te configureren die u wilt gebruiken om de gegevens te importeren, en u bent klaar om uw rapportagewerk te automatiseren. Ik heb enkele van de elementen besproken die we in dit artikel in het voorgaande zullen gebruiken
VBA-artikelen Hoe u uw eigen eenvoudige app kunt maken met VBAWil je weten hoe je je eigen VBA-applicatie maakt om problemen op te lossen? Gebruik deze tips om uw eigen VBA-software te bouwen. Lees verder hier bij MakeUseOf. Een paar daarvan omvatten het doorgeven van gegevens tussen toepassingen met het klembord Geef alle informatie door tussen VBA-toepassingen met behulp van het klembordEen van de meest frustrerende onderdelen van het werken met VBA binnen specifieke applicaties, is dat het niet altijd gemakkelijk is om twee applicaties met elkaar te laten 'praten'. U kunt zeer snelle transacties proberen ... Lees verder , exporteren Outlook-taken naar Excel Hoe u uw Outlook-taken naar Excel exporteert met VBAOf je nu wel of geen fan bent van Microsoft, een goede zaak die gezegd kan worden over MS Office-producten is in ieder geval hoe gemakkelijk het is om ze allemaal met elkaar te integreren ... Lees verder en verzenden E-mails vanuit een Excel E-mails verzenden vanuit een Excel-spreadsheet met VBA-scriptsOnze codesjabloon helpt u bij het instellen van geautomatiseerde e-mails vanuit Excel met behulp van Collaboration Data Objects (CDO) en VBA-scripts. Lees verder script.Wat ik je laat zien, is hoe je Office Web Components combineert met scripts voor tekstbestanden om een naadloze, geautomatiseerde gegevensstroom van een plat tekstbestand op uw computer naar uw Office-product (in ons geval Excel). Je kunt dezelfde techniek gebruiken - met een paar kleine aanpassingen - in Word, Outlook of zelfs PowerPoint. Met elk Office-product (of elk ander product) met een VBA-back-end voor ontwikkelaars, kunt u deze techniek gebruiken.
Importeer en maak een grafiek van gegevensbestanden
Voordat u een grafiek van gegevensbestanden kunt maken, moet u eerst een paar dingen inschakelen. In dit voorbeeld laat ik u zien hoe u deze functies in Excel inschakelt, maar het proces is bijna identiek in elk ander Office-product.
Voordat u een VBA-ontwikkeling kunt uitvoeren, moet u eerst het tabblad voor ontwikkelaars in de werkbalk inschakelen (als u dat nog niet heeft gedaan). Om dit te doen, gaat u gewoon naar het menu Opties, klikt u op "Lint aanpassen" en schakelt u het tabblad "Ontwikkelaar" in.
Terug in Excle zie je nu 'Ontwikkelaar' verschijnen in de menu's. Klik erop en klik op "Ontwerpmodus". Klik vervolgens op "Bekijk code" om de VBA-editor te zien.
In de editor moet je de referenties inschakelen die je nodig hebt voor de code die ik je ga laten werken. Zorg ervoor dat u de Office Web Components-invoegtoepassing hebt geïnstalleerd voordat u dit doet, anders is het Microsoft Chart-object niet beschikbaar.
Klik op Extra en vervolgens op Referenties en u ziet een lijst met alle referenties die beschikbaar zijn op uw systeem. Als u niet weet wat dit zijn, zijn verwijzingen in feite bibliotheken met code en objecten die u in uw eigen project kunt opnemen. Hiermee kunt u een aantal echt coole dingen doen, afhankelijk van welke referentie u inschakelt. Als u zojuist Office Web Components in uw systeem heeft geïnstalleerd, moet u deze als een nieuwe bibliotheek toevoegen, dus klik op de knop Bladeren om het juiste DLL-bestand te vinden.
Als u Office Web Components hebt geïnstalleerd, heet het DLL-bestand OWC11.dll en wordt het opgeslagen in c: \ programmabestanden \ gewone bestanden \ microsoft shared \ webcomponenten \ 11 \
Klik op het selectievakje voor de verwijzing "Microsoft Office Web Components 11.0" en vergeet ook niet selecteer ook "Microsoft Scripting Runtime", waarmee u gegevens kunt lezen of schrijven bestanden.
Nu u de referentie heeft toegevoegd, is het tijd om de eigenlijke grafiek aan uw blad toe te voegen. In Excel kunt u besturingselementen toevoegen door op "Invoegen" in het menu Ontwikkelaar te klikken en op het kleine gereedschapspictogram in de hoek onder "ActiveX-besturingselementen" te klikken.
Scroll naar "Microsoft Office Chart 11.0" en klik op OK.
We gaan eindelijk aan de slag. Dit is hoe het MS Web Component-diagram eruitziet, ingesloten in een spreadsheet. Het ziet er hetzelfde uit ingebed in een Word-document of iets anders.
Dus in het geval van Excel wil ik dat de grafiek onmiddellijk gegevens uit het gegevensbestand laadt bij het openen van het werkmapbestand. Om dit te doen, ga je naar de code-editor door op "View Code" te klikken in het Developer-menu, en dubbelklik op de werkmap om de werkboekcode te zien. Verander de rechter dropdown naar “Open”. Dit is het script dat wordt uitgevoerd wanneer het werkmapbestand voor het eerst wordt geopend.
Om de kaart te laden met gegevens uit code, heeft de kaart zelf een naam nodig. Ga terug naar de spreadsheet, klik met de rechtermuisknop op de grafiek en kies Eigenschappen. U ziet het veld 'Naam' met zoiets als 'ChartSpace1'. Je kunt dit in alles veranderen. Ik heb de mijne "MyChart" genoemd.
Om ervoor te zorgen dat u weet hoe het gegevensbestand eruit ziet, is het mijne een tekstbestand gevuld met gegevenswaarden in een door komma's gescheiden indeling. Dit bestand kan van alles zijn: laboratoriumgegevens die zijn geëxporteerd vanuit sensoren, financiële informatie die handmatig door stagiaires in het bestand is getypt of iets anders. U leest het bestand in met uw code, dus het maakt niet uit hoe de gegevens eruitzien, zolang u maar weet hoe elke regel eruit zal zien wanneer uw programma het leest.
Dus nu voor het leuke gedeelte. Ik laat je de code in kleine secties zien, dus het is niet overweldigend, en leg uit wat de code doet. De bovenkant van de code leest eerst alle waarden uit het tekstbestand in en slaat ze op in twee arrayx, één voor x-variabelen (xVar) en één voor y-variabelen (yVar).
Dim fso als nieuw FileSystemObject. Dim fnum. Dim MyFile As String. Dim strDataLine As String. Dim xVar () als variant. Dim yVar () als variant. Dim intNumOfLines As Integer MyFile = "c: \ files \ MyData.txt" fnum = FreeFile () Open MyFile voor invoer als # 1. intNumOfLines = 0. Do While Not EOF (1) intNumOfLines = intNumOfLines + 1 Input # 1, strDataLine Input # 1, strDataLine. Lus. Sluit # 1 ReDim xVar (intNumOfLines) ReDim yVar (intNumOfLines) Open MyFile voor invoer als # 1. intNumOfLines = 0. Do While Not EOF (1) Input # 1, xVar (intNumOfLines) Input # 1, yVar (intNumOfLines) intNumOfLines = intNumOfLines + 1. Lus. Sluit # 1
Deze code loopt in feite tweemaal door het gegevensbestand - de eerste keer dat de arrays zo worden gedimensioneerd dat het is de exacte lengte die nodig is om de gegevens op te slaan en vervolgens een tweede keer om de gegevens daarin in te lezen arrays. Als u niet weet wat een array is, is het een variabele of een opslaggebied dat een lange lijst met waarden bevat waartoe u toegang kunt krijgen door de volgorde te gebruiken waarin de waarde in de array is opgeslagen. De derde die geladen is zou bijvoorbeeld (3) zijn.
Nu u twee van deze arrays hebt geladen met alle waarden uit uw gegevensbestand, bent u klaar om die waarden in het diagram te laden dat u al heeft ingesloten. Hier is de code die dat doet.
Met Sheet1.MyChart .Clear .Refresh Set oChart = .Charts. OChart toevoegen. HasTitle = True oChart. Titel. Caption = "Mijn gegevenswaarden" 'grafiek. Interieur. Color = "blue" oChart. Plotgebied. Interieur. Color = "white" Stel oSeries = oChart in. SerieCollection. Add With oSeries .Caption = "My Data Values" .SetData chDimCategories, chDataLiteral, xVar .SetData chDimValues, chDataLiteral, yVar .Line. Color = "blue" .Line. DashStyle = chLineDash .Line. Gewicht = 2 .Type = chChartTypeLine Einde met oChart. HasLegend = Waar. oChart. Legende. Positie = chLegendPositionBottom. Eindigt met
Het is de 'Sheet1.MyChart' die de code verbindt met de daadwerkelijke grafiek die u heeft ingesloten. Het is gebaseerd op hoe je het noemde. Dit is het geval wanneer u het insluit in Word, Powerpoint of een ander Office-product. U verwijst er niet naar met 'Blad1', maar in plaats daarvan met welk element dan ook de Grafiek, zoals bijvoorbeeld 'document1' in Word.
De bovenstaande code stelt vervolgens de etikettering en kleuring van de grafiek in en laadt vervolgens de waarden met de ".setdata" -methode voor zowel x- als y-waarden van de tweedimensionale dataset. Zodra de bovenstaande code is uitgevoerd, wordt de volgende grafiek weergegeven.
Deze gegevens komen rechtstreeks uit het tekstbestand. Het enige nadeel hier is dat de gegevensbestanden alleen tweedimensionaal hoeven te zijn als u de bovenstaande code wilt gebruiken. U kunt meer waarden aan de gegevensset toevoegen, maar u moet de bovenstaande code wijzigen om de derde waarde elke keer door de lus te lezen en vervolgens de 'SeriesCollection' te dupliceren. Sectie toevoegen om een nieuwe reeks te maken en deze vervolgens op dezelfde manier aan de grafiek toe te voegen.
Het lijkt misschien ingewikkeld om de bovenstaande code te lezen, maar als je eenmaal een van deze hebt gedaan, is het een fluitje van een cent om het aan te passen aan wat je nodig hebt. U kunt dezelfde grafiek en vergelijkbare code gebruiken om een staafdiagram, een spreidingsdiagram of een ander diagramtype te maken dat u met hetzelfde object wilt gebruiken. Het is veelzijdig en flexibel - en het is een krachtig hulpmiddel in je arsenaal als je een fan bent van automatisering voor meer productiviteit.
Speel met de bovenstaande code en kijk of u gegevens automatisch in uw applicaties kunt laden. Welk creatief gebruik kun je bedenken voor dit soort automatisering? Deel uw mening en feedback in de opmerkingen hieronder!
Ryan heeft een BSc-graad in elektrotechniek. Hij heeft 13 jaar in automatiseringstechniek gewerkt, 5 jaar in IT en is nu een Apps Engineer. Hij was een voormalig hoofdredacteur van MakeUseOf, hij sprak op nationale conferenties over datavisualisatie en was te zien op nationale tv en radio.