Sådan opretter du en graf fra rå datafiler i ethvert kontorprodukt

  • Owen Little
  • 0
  • 1746
  • 407
Reklame

Ville det ikke være rart at have muligheden for bare at åbne et Excel-regneark eller et Word-dokument, og uden at skulle overhovedet gøre noget, læses data direkte ud af en tekst- eller CSV-datafil og indlæses direkte i et indlejret diagram på dit regneark eller Word-dokument? Dette er en form for automatisering ved hjælp af Office-produkter, for hvis det er muligt at automatisere kortlægningen af ​​data i Office, skal du bare tænke på mulighederne. Du kan automatisk indlæse data i et diagram for en rapport, som du sammensætter til din chef - ingen dataindtastning kræves. Eller du kan indlæse data i et diagram direkte i en e-mail i Outlook.

Teknikken til at udføre dette involverer installation af Office Web Components-tilføjelsen. Desuden skal du bare konfigurere et par ting inde i Office-applikationen, som du vil bruge til at importere dataene, og du er klar til at begynde at automatisere dit rapporteringsarbejde. Jeg har dækket nogle af de elementer, som vi vil bruge i denne artikel i tidligere VBA-artikler Hvordan du kan lave din egen enkle app med VBA Hvordan du kan lave din egen enkle app med VBA For dem af jer, der virkelig ville elske for at være i stand til at skrive din egen ansøgning, men aldrig har indtastet en enkelt kodelinie før, vil jeg gå igennem dig ved at lave dit ... her på MakeUseOf. Et par af dem inkluderede videregivelse af data mellem applikationer med udklipsholderen Overfør alle oplysninger mellem VBA-applikationer ved hjælp af udklipsholderen Videregiver enhver information mellem VBA-applikationer ved hjælp af udklipsholderen En af de mest frustrerende dele af at arbejde med VBA inden for specifikke applikationer, er at det ikke altid er nemt at få to applikationer til “tale” til hinanden. Du kan prøve meget hurtige transaktioner ... og eksportere Outlook-opgaver til Excel Sådan eksporteres dine Outlook-opgaver til Excel med VBA Sådan eksporteres dine Outlook-opgaver til Excel med VBA Uanset om du er fan af Microsoft eller ikke, er en god ting der sagt om MS Office-produkter er i det mindste hvor let det er at integrere hver af dem med hinanden… og sende e-mails fra en Excel Sådan sendes e-mails fra et Excel-regneark ved hjælp af VBA-scripts Sådan sendes e-mails fra et Excel-regneark ved hjælp af VBA-scripts Vores kodeskabelon hjælper dig med at opsætte automatiserede e-mails fra Excel ved hjælp af Collaboration Data Objects (CDO) og VBA-scripts. manuskript.

Det, jeg vil vise dig, er hvordan man kombinerer Office Web Components med tekstfil scripting for at skabe en sømløs, automatiseret strøm af data fra en flad tekstfil på din computer til dit Office-produkt (i vores tilfælde Excel). Du kan bruge denne samme teknik - med et par små ændringer - i Word, Outlook eller endda PowerPoint. Ethvert Office-produkt (eller ethvert andet produkt for den sags skyld), der har en VBA-backend for udviklere, giver dig mulighed for at bruge denne teknik.

Importer og opret en graf fra datafiler

Inden du kan oprette en graf fra datafiler, skal du først aktivere et par ting. I dette eksempel vil jeg vise dig, hvordan du aktiverer disse funktioner i Excel, men processen er næsten identisk i alle andre Office-produkter.

Først inden du kan foretage nogen VBA-udvikling, skal du aktivere udviklerfanen på værktøjslinjen (hvis du ikke allerede har gjort det). For at gøre dette skal du bare gå ind i menuen Indstillinger, klikke ind “Tilpas bånd” og aktiver “Udvikler” fanen.

Tilbage i Excle, vil du nu se “Udvikler” dukker op i menuerne. Klik på det og klik på “Designtilstand”. Klik derefter på “Se kode” for at se VBA-redaktøren.

Inde i editoren er det, hvor du bliver nødt til at aktivere de referencer, du har brug for, for den kode, jeg vil give dig, til at arbejde. Sørg for, at du har installeret tilføjelsen Office Web Components, før du gør dette, ellers er Microsoft Chart-objektet ikke tilgængeligt.


Klik på Værktøjer og derefter på Referencer, så ser du en liste over alle de referencer, der er tilgængelige på dit system. Hvis du ikke ved, hvad disse er - referencer er dybest set biblioteker med kode og objekter, som du kan trække ind i dit eget projekt. Disse giver dig mulighed for at gøre nogle virkelig seje ting, afhængigt af hvilken reference du aktiverer. Hvis du netop har installeret Office Web Components i dit system, skal du tilføje det som et nyt bibliotek, så klik på knappen Gennemse for at finde den rigtige .dll-fil.

Hvis du har installeret Office Web Components, kaldes DLL-filen OWC11.dll, og den er gemt i c: \ programfiler \ almindelige filer \ delte microsoft \ webkomponenter \ 11 \

Klik på afkrydsningsfeltet for “Microsoft Office Web Components 11.0” reference, og glem heller ikke at vælge “Microsoft scripting kørsel” også, hvilket giver dig adgang til at læse eller skrive fra datafiler.

Nu, hvor du har tilføjet referencen, er det tid til at føje det faktiske diagram til dit ark. I Excel kan du tilføje kontroller ved at klikke på “Indsæt” i Developer-menuen og klikke på det lille værktøjsikon i hjørnet under “ActiveX-kontroller”.

Rul til “Microsoft Office-diagram 11.0” og klik på OK.

Vi er omsider begyndt at arbejde. Sådan ser MS Web Component-diagrammet ud integreret i et regneark. Det ser ens indlejret i et Word-dokument eller andet.


Så for Excel vil jeg gerne have, at diagrammet øjeblikkeligt indlæser data fra datafilen, når jeg åbner projektmappen. For at gøre dette går du ind i kodeditoren ved at klikke på “Se kode” i menuen Udvikler, og dobbeltklik på projektmappen for at se projektmappekoden. Skift det rigtige dropdown til “Åben”. Dette er scriptet, der kører, når projektmappen først åbnes.


For at indlæse diagrammet med data fra kode, skal selve kortet have et navn. Gå tilbage til regnearket, højreklik på diagrammet og vælg Egenskaber. Du kan se “Navn” felt med noget som “ChartSpace1”. Du kan ændre dette til noget. Jeg har ringet til min “MyChart”.

Bare så du ved, hvordan datafilen er - min er en tekstfil fyldt med dataværdier i kommaafgrænset format. Denne fil kan være overhovedet - laboratoriedata, der eksporteres fra sensorer, økonomiske oplysninger, der er indtastet manuelt i filen af ​​praktikanter eller overhovedet andet. Du læser filen ind med din kode, så det betyder ikke noget, hvordan dataene ser ud, så længe du ved, hvordan hver linje ser ud, når dit program læser dem i.

Så nu til den sjove del. Jeg vil vise dig koden i små sektioner, så den ikke er overvældende, og forklare, hvad koden gør. Toppen af ​​koden læser først alle værdierne fra tekstfilen og gemmer dem i to matrixer, en for x-variabler (xVar) og en for y-variabler (yVar).

Dim fso Som nyt FileSystemObject Dim fnum Dim MyFile Som streng Dim strDataLine Som streng Dim xVar () Som Variant Dim yVar () Som Variant Dim intNumOfLines Som heltal MyFile = "c: \ files \ MyData.txt" fnum = FreeFile () Åbn MyFile For input som nr. 1 intNumOfLines = 0 Gør mens ikke EOF (1) intNumOfLines = intNumOfLines + 1 input # 1, strDataLine Input # 1, strDataLine Loop Close # 1 ReDim xVar (intNumOfLines) ReDim yVar (intNumOfLines) 1 intNumOfLines = 0 Gør mens ikke EOF (1) input # 1, xVar (intNumOfLines) input # 1, yVar (intNumOfLines) intNumOfLines = intNumOfLines + 1 Loop Close # 1

Denne kode kører grundlæggende gennem datafilen to gange - første gang at dimensionere matriserne, så de er den nøjagtige længde, der er nødvendig for at gemme dataene, og derefter en anden gang for at læse dataene i disse arrays. Hvis du ikke ved, hvad en matrix er - er det en variabel eller et lagerområde, der vil indeholde en lang liste over værdier, som du kan få adgang til ved hjælp af den rækkefølge, som værdien blev gemt i array. Den ene indlæste tredjedel ville være (3) for eksempel.

Nu hvor du har to af disse arrays indlæst med alle værdierne fra din datafil, er du klar til at indlæse disse værdier i diagrammet, som du allerede har indlejret. Her er koden, der gør det.

Med ark1.MyChart .Clear .Refresh Sæt oChart = .Charts.Tilføj oChart.HasTitle = Sandt oChart.Title.Caption = "Mine dataværdier" 'oChart.Interior.Color = "blå" oChart.PlotArea.Interior.Color = " hvid "Indstil oSeries = oChart.SeriesCollection.Tilføj med oSeries .Caption =" Mine dataværdier ". SetData chDimCategorier, chDataLiteral, xVar. SetData chDimValues, chDataLiteral, yVar .Line.Color =" blue ".Line.DashStyle = chine. .Vægt = 2. Type = chChartTypeLine End With oChart.HasLegend = True oChart.Legend.Position = chLegendPositionBottom End With

Det er “Sheet1.MyChart” der forbinder koden til det faktiske diagram, du har indlejret. Det er baseret på, hvad du navngav det. Dette vil være tilfældet, når du integrerer det i Word, Powerpoint eller ethvert andet Office-produkt. Du henviser ikke til det ved hjælp af “Ark1”, men i stedet for, uanset hvilket element der indeholder kortet i dette tilfælde, f.eks “dokument1” i Word for eksempel.

Koden ovenfor indstiller derefter mærkningen og farvelægningen af ​​grafen og indlæser derefter værdierne ved hjælp af “.setdata” metode til både x- og y-værdier i det 2-dimensionelle datasæt. Når først ovenstående kode er kørt, vises følgende graf.

Disse data er lige ud af tekstfilen. Den eneste ulempe her er, at datafilerne kun behøver at være to-dimensionelle, hvis du vil bruge koden ovenfor. Du kan tilføje flere værdier til datasættet, men du bliver nødt til at ændre koden ovenfor for at læse i den tredje værdi hver gang gennem loopen og derefter kopiere “SeriesCollection.Add” sektion for at oprette en anden serie og derefter føje den til diagrammet på samme måde.

Det kan virke kompliceret bare ved at læse koden ovenfor, men når du først har gjort en af ​​disse, er det et stykke kage for at ændre det til hvad dine behov er. Du kan bruge det samme diagram og lignende kode til at oprette et søjlediagram, et scatter-diagram eller en hvilken som helst anden korttype, du vil bruge dette samme objekt. Det er alsidigt og fleksibelt - og det er et kraftfuldt værktøj i dit arsenal, hvis du er en med-fan af automatisering for større produktivitet.

!




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.