Slik lager du en graf fra raske datafiler i et hvilket som helst kontorprodukt

Slik lager du en graf fra raske datafiler i et hvilket som helst kontorprodukt / Windows

Ville det ikke vært fint å ha muligheten til å bare åpne et Excel-regneark eller et Word-dokument, og uten å måtte gjøre noe i det hele tatt, blir dataene lest direkte ut av en tekst- eller CSV-datafil og lastes direkte inn i et diagram som er innebygd på regnearket ditt eller Word-dokumentet? Dette er en form for automatisering ved hjelp av Office-produkter, fordi hvis det er mulig å automatisere kartleggingen av data i Office, tenk bare på mulighetene. Du kan automatisk laste inn data i et diagram for en rapport som du legger sammen for sjefen din - ingen dataoppføring kreves. Eller du kan laste inn data i et diagram direkte inn i en epost i Outlook.

Teknikken for å oppnå dette innebærer å installere Office Web Components-tillegget. Videre trenger du bare å konfigurere noen ting inne i Office-programmet du vil bruke til å importere dataene, og du er klar til å begynne å automatisere rapporteringsarbeidet ditt. Jeg har dekket noen av elementene som vi skal bruke i denne artikkelen i tidligere VBA-artikler Hvordan du kan lage din egen enkle app med VBA Hvordan du kan lage din egen enkle app med VBA For de av dere som virkelig ville elske for å kunne skrive din egen søknad, men har aldri skrevet en enkelt kodekode før, jeg skal gå gjennom deg og gjøre deg veldig ... Les mer her på MakeUseOf. Noen av disse inkluderte å sende data mellom applikasjoner med utklippstavlen. Pass Eventuelle opplysninger mellom VBA-applikasjoner ved hjelp av utklippstavlen. Pass noen informasjon mellom VBA-programmer ved hjelp av utklippstavlen. En av de mest frustrerende delene av å jobbe med VBA innenfor bestemte applikasjoner, er at det ikke alltid er lett å få to applikasjoner til “snakke” til hverandre. Du kan prøve for svært raske transaksjoner ... Les mer, eksporter Outlook-oppgaver til Excel Slik eksporterer du Outlook-oppgaver til Excel med VBA Slik eksporterer du Outlook-oppgaver til Excel med VBA Uansett om du er en fan av Microsoft, er det en god ting at kan sies om MS Office-produkter, i hvert fall, er det lett å integrere hverandre med hverandre ... Les mer og send e-post fra en Excel Slik sender du 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 Excel ved hjelp av samarbeidsdataobjekter (CDO) og VBA-skript. Les mer skript.

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

Importer og lag en graf fra datafiler

Før du kan opprette 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 utviklerfliken i verktøylinjen (hvis du ikke allerede har det). For å gjøre dette, bare gå inn i Alternativer-menyen, klikk inn “Tilpass båndet” og aktiver “Utvikler” tab.

Tilbake i Excle, vil du nå se “Utvikler” dukker opp i menyene. Klikk på den og klikk på “Designmodus”. Klikk deretter på “Vis kode” for å se VBA-editoren.

Inne i redaktøren er hvor du må aktivere referanser som du trenger for koden jeg skal gi deg til jobb. Kontroller at du har installert tilleggsprogrammet for Office Web Components før du gjør dette, ellers vil Microsoft Chart-objektet ikke være tilgjengelig.


Klikk på Verktøy og deretter Referanser, og du vil se 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 objekter som du kan trekke inn i ditt eget prosjekt. Disse tillater 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å Browse-knappen for å finne riktig .dll-fil.

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

Klikk avkrysningsboksen for “Microsoft Office Web Components 11.0” referanse, og ikke glem å velge “Microsoft Scripting Runtime” også, som vil gi deg tilgang til å lese eller skrive fra datafiler.

Nå som du har lagt til referansen, er det på tide å legge til det aktuelle diagrammet på arket ditt. I Excel kan du legge til kontroller ved å klikke på “Sett inn” i Utvikler-menyen, og klikk på ikonet for lite verktøy i hjørnet under “ActiveX-kontroller”.

Bla til “Microsoft Office Chart 11.0” og klikk OK.

Vi kommer endelig til forretninger. Slik ser MS Web Component-diagrammet ut som innebygd i et regneark. Det ser det samme inn i et Word-dokument eller noe annet.


Så, når det gjelder Excel, vil jeg at diagrammet umiddelbart skal laste inn data fra datafilen ved å åpne arbeidsbokfilen. For å gjøre dette, går du inn i kodeditoren ved å klikke på “Vis kode” i Utvikler-menyen, og dobbeltklikk på arbeidsboken for å se arbeidsbokskoden. Endre høyre rullegardin til “Åpen”. Dette er skriptet som vil løpe når arbeidsbokfilen først åpnes.


For å laste diagrammet med data fra kode, trenger selve diagrammet et navn. Gå tilbake til regnearket, høyreklikk på diagrammet og velg Egenskaper. Du vil se “Navn” felt med noe sånt “ChartSpace1”. Du kan endre dette til noe. Jeg har kalt min “MyChart”.

Også bare så du vet hva datafilen er som - min er en tekstfil fylt med dataværdier i kommaseparert format. Denne filen kan være noe i det hele tatt - laboratoriedata som er eksportert fra sensorer, finansiell informasjon er skrevet inn manuelt av praktikanter, eller noe annet i det hele tatt. Du leser filen inn med koden din, så det spiller ingen rolle hva dataene ser ut, så lenge du vet hva hver linje vil se ut når programmet leser det i.

Så nå for den morsomme delen. Jeg skal vise koden i små seksjoner, så det er ikke overveldende, og forklare hva koden gjør. Øverst på koden skal først leses i alle verdiene fra tekstfilen og lagre dem i to arrayx, en for x-variabler (xVar) og en for y-variabler (yVar).

Dim Fso Som Ny FileSystemObject Dim fnum Dim MyFile Som String Dim StrDataLine Som String Dim xVar () Som Variant Dim yVar () Som Variant Dim IntNumOfLines Som Integer MyFile = "c: \ Files \ MyData.txt" fnum = FreeFile () Åpne MyFile For Input As # 1 intNumOfLines = 0 Gjør mens ikke EOF (1) intNumOfLines = intNumOfLines + 1 Input # 1, strDataLine Input # 1, strDataLine Loop Lukk # 1 ReDim xVar (intNumOfLines) ReDim yVar (intNumOfLines) Åpne MyFile For Input As # 1 intNumOfLines = 0 Gjør mens ikke EOF (1) Inngang 1, xVar (intNumOfLines) Inngang 1, yVar (intNumOfLines) intNumOfLines = intNumOfLines + 1 Loop Lukk # 1

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

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

Med Sheet1.MyChart .Ryd .Refresh Sett oChart = .Charts.Add oChart.HasTitle = True oChart.Title.Caption = "Mine dataverdier" 'oChart.Interior.Color = "blue" oChart.PlotArea.Interior.Color = " hvit "Sett oSeries = oChart.SeriesCollection.Add With oSeries .Caption =" Mine dataverdier ".SetData chDimCategories, chDataLiteral, xVar .SetData chDimValues, chDataLiteral, yVar .Line.Color =" blue ".Line.DashStyle = chLineDash .Line .Veight = 2 .Type = chChartTypeLine End med oChart.HasLegend = True oChart.Legend.Position = chLegendPositionBottom End With

Det er “Sheet1.MyChart” som kobler koden til selve diagrammet du har innebygd. Det er basert på hva du kalt det. Dette vil være tilfelle når du legger det i Word, Powerpoint eller et annet Office-produkt. Du vil ikke referere den til å bruke “Sheet1”, men i stedet hva som helst elementet holder diagrammet i det tilfellet, for eksempel “dokument1” for eksempel i Word.

Koden ovenfor setter opp merking og farging av grafen, og laster deretter verdiene ved hjelp av “.setdata” metode for både x og y verdier av det 2-dimensjonale datasettet. Når den ovennevnte koden er ferdig, vises følgende 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 ovenfor. Du kan legge til flere verdier i datasettet, men du må endre koden ovenfor for å lese i den tredje verdien hver gang gjennom løkken, og dupliser deretter “SeriesCollection.Add” seksjonen for å opprette en annen serie og deretter legge den til diagrammet på samme måte.

Det kan virke komplisert bare å lese koden ovenfor, men når du har gjort en av disse, er det et stykke kake for å modifisere det for hva dine behov er. Du kan bruke samme diagram og lignende kode for å lage et strekdiagram, et scatterdiagram eller en annen diagramtype du vil bruke samme objekt. Den er allsidig og fleksibel - og det er et kraftig verktøy i ditt arsenal hvis du har en medvenner av automatisering for større produktivitet.

Spill av med koden ovenfor og se om du kan automatisk laste inn data i dine applikasjoner. Hvilke kreative bruksområder kan du tenke på for denne typen automatisering? Del dine tanker og tilbakemeldinger i kommentarfeltet nedenfor!

Utforsk mer om: Microsoft Excel, Microsoft PowerPoint, Microsoft Word.