Annonse

lag en grafVille det ikke være fint å ha muligheten til å bare åpne opp et Excel-regneark eller et Word-dokument, og uten å måtte gjøre noe på alt blir data lest direkte ut av en tekst- eller CSV-datafil og lastes direkte inn i et diagram som er innebygd i regnearket eller Word dokument? Dette er en form for automatisering ved bruk av Office-produkter, fordi hvis det er mulig å automatisere kartleggingen av data i Office, bare tenk på mulighetene. Du kan automatisk laste inn data i et diagram for en rapport som du setter sammen for sjefen din - ingen dataoppføring er nødvendig. Eller du kan laste inn data i et diagram direkte i en e-post i Outlook.

Teknikken for å oppnå dette innebærer å installere Office Web Components-tillegget. Videre trenger du bare å konfigurere noen få ting i Office-applikasjonen du vil bruke til å importere dataene, og du er klar til å begynne å automatisere rapporteringsarbeidet. Jeg har dekket noen av elementene som vi skal bruke i denne artikkelen tidligere VBA-artikler

instagram viewer
Hvordan du kan lage din egen enkle app med VBAVil du vite hvordan du lager din egen VBA-applikasjon for å løse problemer? Bruk disse tipsene til å lage din egen VBA-programvare. Les mer her på MakeUseOf. Noen få av dem inkluderte videreføring av data mellom applikasjoner med utklippstavlen Gi all informasjon mellom VBA-applikasjoner ved hjelp av utklippstavlenEn av de mest frustrerende delene av å jobbe med VBA i spesifikke applikasjoner, er at det ikke alltid er lett å få to applikasjoner til å "snakke" med hverandre. Du kan prøve veldig raske transaksjoner ... Les mer , eksport Outlook-oppgaver til Excel Slik eksporterer du Outlook-oppgavene dine til Excel med VBAEnten du er fan av Microsoft eller ikke, er en god ting som i det minste kan sies om MS Office-produkter hvor enkelt det er å integrere hver av dem med hverandre ... Les mer , og sending E-post fra en Excel Slik sender du e-post fra et Excel-regneark ved hjelp av VBA-skriptKodemalen vår vil hjelpe deg med å sette opp automatiserte e-poster fra Excel ved hjelp av CDO (Collaboration Data Objects) og VBA-skript. Les mer manus.

Det jeg skal vise deg er hvordan du kombinerer Office Web Components med scripting av tekstfiler for å lage en sømløs, automatisk strøm av data fra en flat tekstfil på datamaskinen din til ditt Office-produkt (i vårt tilfelle Utmerke). Du kan bruke den samme teknikken - med noen få små modifikasjoner - i Word, Outlook eller til og med PowerPoint. Ethvert Office-produkt (eller noe annet produkt for den saks skyld) som har en VBA-backend for utviklere, vil tillate deg å bruke denne teknikken.

Importer og opprett en graf fra datafiler

Før du kan lage en graf fra datafiler, må du aktivere noen få ting først. I dette eksemplet skal jeg vise deg hvordan du aktiverer disse funksjonene i Excel, men prosessen er nesten identisk i alle andre Office-produkter.

Først før du kan gjøre noen VBA-utvikling, må du aktivere utvikler-fanen på verktøylinjen (hvis du ikke allerede har gjort det). For å gjøre dette, bare gå til Alternativer-menyen, klikk i "Tilpass bånd" og aktiver "Utvikler" -fanen.

lag en graf

Tilbake i Excle, vil du nå se "Developer" vises på menyene. Klikk på den og klikk på “Design Mode”. Klikk deretter på "Vis kode" for å se VBA-redigereren.

Hvordan lage en graf fra rå datafiler i ethvert kontorprodukt VBAChart21

Inne i redaktøren er det du må aktivere referansene du trenger for koden jeg skal gi deg til å fungere. Forsikre deg om at du har installert tilleggsutstyret for Office Web Components før du gjør dette, ellers vil ikke Microsoft Chart-objektet være tilgjengelig.

opprette graf
Klikk på Verktøy og deretter Referanser, så ser du en liste over alle referansene som er tilgjengelige på systemet ditt. Hvis du ikke vet hva dette er - referanser er i utgangspunktet biblioteker med kode og gjenstander som du kan hente inn i ditt eget prosjekt. Disse lar deg gjøre noen veldig kule ting, avhengig av hvilken referanse du aktiverer. Hvis du nettopp har installert Office Web Components i systemet ditt, må du legge det til som et nytt bibliotek, så klikk på Bla gjennom-knappen for å finne den riktige .dll-filen.

opprette graf

Hvis du har installert Office Web Components, kalles DLL-filen OWC11.dll, og den er lagret i c: \ programfiler \ vanlige filer \ microsoft shared \ web component \ 11 \
opprette graf

Klikk i avmerkingsruten for referansen "Microsoft Office Web Components 11.0", og glem heller ikke det velg “Microsoft Scripting Runtime” også, som vil gi deg tilgang til å lese eller skrive fra data filer.

Nå som du har lagt til referansen, er det på tide å legge det faktiske diagrammet til arket ditt. I Excel kan du legge til kontroller ved å klikke på "Sett inn" i Utvikler-menyen, og klikke på det lille verktøyikonet i hjørnet under "ActiveX-kontroller".

Hvordan lage en graf fra rå datafiler i ethvert kontorprodukt VBAChart6

Bla til “Microsoft Office Chart 11.0” og klikk OK.
lage en graf gratis

Vi kommer til slutt ut i livet. Slik ser MS Web Component-diagrammet ut som innebygd i et regneark. Det ser likt innebygd i et Word-dokument eller noe annet.

lage en graf gratis
Så for Excel vil jeg at diagrammet øyeblikkelig vil laste inn data fra datafilen når jeg åpner arbeidsbokfilen. For å gjøre dette går du inn i kodeditoren ved å klikke på "Vis kode" i utvikler-menyen og dobbeltklikke på arbeidsboka for å se arbeidsbokkoden. Endre rullegardinmenyen til “Åpne”. Dette er skriptet som kjøres når arbeidsbokfilen først åpnes.

lage en graf gratis
For å laste diagrammet med data fra kode, trenger selve kartet et navn. Gå tilbake til regnearket, høyreklikk på diagrammet og velg Egenskaper. Du ser feltet "Navn" med noe som "ChartSpace1". Du kan endre dette til hva som helst. Jeg har kalt min "MyChart".
Hvordan lage en graf fra rå datafiler i ethvert kontorprodukt VBAChart10
Bare så du vet hvordan datafilen er - min er en tekstfil fylt med dataverdier i kommaavgrenset format. Denne filen kan være hva som helst - laboratoriedata eksportert fra sensorer, økonomisk informasjon skrevet inn i filen manuelt av praktikanter, eller noe annet i det hele tatt. Du skal lese filen inn med koden din, så det spiller ingen rolle hvordan dataene ser ut, så lenge du vet hvordan hver linje skal se ut når programmet ditt leser det inn.
lag en graf
Så nå for den morsomme delen. Jeg skal vise deg koden i små deler, så den ikke er overveldende, og forklare hva koden gjør. Toppen av koden skal først lese inn alle verdiene fra tekstfilen og lagre dem i to matriser, en for x-variabler (xVar) og en for y-variabler (yVar).

Dim fso Som nytt FileSystemObject. Dim fnum. Dim MyFile som streng. Dim strDataLine As String. Dim xVar () Som variant. Dim yVar () Som variant. Dim intNumOfLines As Integer MyFile = "c: \ files \ MyData.txt" fnum = FreeFile () Åpne MyFile for input som nr. 1. intNumOfLines = 0. Do While Not EOF (1) intNumOfLines = intNumOfLines + 1 Input # 1, strDataLine Input # 1, strDataLine. Løkke. Lukk # 1 ReDim xVar (intNumOfLines) ReDim yVar (intNumOfLines) Åpne MyFile for input som nr. 1. intNumOfLines = 0. Do While Not EOF (1) Input # 1, xVar (intNumOfLines) Input # 1, yVar (intNumOfLines) intNumOfLines = intNumOfLines + 1. Løkke. Lukk nr. 1

Denne koden går i utgangspunktet gjennom datafilen to ganger - første gang å dimensjonere arrayene slik at de er den nøyaktige lengden som trengs for å lagre dataene, og deretter en gang til for å lese dataene i disse arrays. Hvis du ikke vet hva en matrise er - er det en variabel eller et lagringsområde som vil inneholde en lang liste over verdier du kan få tilgang til ved å bruke rekkefølgen som verdien ble lagret i matrisen. Den ene lastede tredjedelen vil være (3), for eksempel.

Nå som du har to av disse gruppene lastet med alle verdiene fra datafilen, er du klar til å laste inn disse verdiene i diagrammet du allerede har lagt inn. Her er koden som gjør det.

Med Sheet1.MyChart .Clear .Refresh Set oChart = .Charts. Legg til oChart. HasTitle = True oChart. Tittel. Bildetekst = "Mine dataverdier" 'oChart. Interiør. Farge = "blå" oChart. Tomtområde. Interiør. Farge = "hvit" Sett oSeries = oChart. SeriesCollection. Add With oSeries .Caption = "My Data Values". SetData chDimCategorier, chDataLiteral, xVar .SetData chDimValues, chDataLiteral, yVar .Line. Farge = "blå". Linje. DashStyle = chLineDash. Linje. Vekt = 2. Type = chChartTypeLine Slutt med oChart. HasLegend = Sant. oChart. Legende. Posisjon = chLegendPositionBottom. Slutt med

Det er “Sheet1.MyChart” som kobler koden til det faktiske diagrammet du har lagt inn. Det er basert på hva du kalte det. Dette vil være tilfelle når du legger det inn i Word, Powerpoint eller et hvilket som helst annet Office-produkt. Du vil ikke henvise det til ved å bruke “Sheet1”, men i stedet for det elementet som inneholder kartet i så fall, for eksempel “document1” i Word for eksempel.

Koden over setter deretter opp merkingen og fargeleggingen av grafen, og laster deretter inn verdiene ved å bruke ".setdata" -metoden for både x- og y-verdiene til det todimensjonale datasettet. Når koden ovenfor er kjørt, vil følgende graf vises.
lag en graf

Disse dataene er rett ut av tekstfilen. Den eneste ulempen her er at datafilene bare trenger å være todimensjonale hvis du vil bruke koden over. Du kan legge til flere verdier i datasettet, men du må endre koden over for å lese den tredje verdien hver gang gjennom loopen, og deretter duplisere “SeriesCollection. Legg til ”-delen for å lage en ny serie, og legg den deretter til i diagrammet på samme måte.

Det kan virke komplisert bare når du leser koden ovenfor, men når du først har gjort en av disse, er det et stykke kake å endre den for hva du trenger. Du kan bruke det samme diagrammet og lignende kode for å lage et søylediagram, et spredningstabell eller en hvilken som helst annen karttype du vil bruke det samme objektet. Det er allsidig og fleksibelt - og det er et kraftig verktøy i arsenalet ditt hvis du er en fan av automatisering for større produktivitet.

Lek med koden over og se om du kan laste inn data automatisk i applikasjonene dine. Hvilke kreative bruksområder kan du tenke på for denne typen automatisering? Del tankene og tilbakemeldingene i kommentarfeltet nedenfor!

Ryan har en BSc-grad i elektroteknikk. Han har jobbet 13 år innen automatisering, 5 år innen IT, og er nå en applikasjonsingeniør. Han var tidligere administrerende redaktør for MakeUseOf, han snakket på nasjonale konferanser om datavisualisering og har blitt omtalt på nasjonal TV og radio.