Annons

skapa en grafSkulle det inte vara trevligt att ha möjlighet att bara öppna ett Excel-kalkylblad eller ett Word-dokument, och utan att behöva göra något på allt läses data direkt ur en text- eller CSV-datafil och laddas direkt i ett diagram inbäddat i ditt kalkylblad eller Word dokumentera? Detta är en form av automatisering med Office-produkter, för om det är möjligt att automatisera kartläggningen av data i Office, tänk bara på möjligheterna. Du kan automatiskt ladda data i ett diagram för en rapport som du sätter ihop för din chef - ingen datainmatning krävs. Eller så kan du läsa in data i ett diagram direkt i ett e-postmeddelande i Outlook.

Tekniken för att åstadkomma detta innebär installation av Office Web Components tillägg. Dessutom behöver du bara konfigurera några saker inuti Office-applikationen som du vill använda för att importera data, och du är redo att automatisera ditt rapporteringsarbete. Jag har täckt några av de element som vi kommer att använda i den här artikeln tidigare VBA-artiklar

instagram viewer
Hur du kan skapa din egen enkla app med VBAVill du veta hur du gör din egen VBA-applikation för att lösa problem? Använd dessa tips för att bygga din egen VBA-programvara. Läs mer här på MakeUseOf. Några av dem inkluderade överföring av data mellan applikationer med urklipp Skicka all information mellan VBA-applikationer med hjälp av UrklippEn av de mest frustrerande delarna av att arbeta med VBA i specifika applikationer är att det inte alltid är lätt att få två applikationer att "prata" med varandra. Du kan prova på mycket snabba transaktioner ... Läs mer , exporterar Outlook-uppgifter till Excel Hur du exporterar dina Outlook-uppgifter till Excel med VBAOavsett om du är fan av Microsoft eller inte, en bra sak som kan sägas om MS Office-produkter, åtminstone, är hur lätt det är att integrera var och en av dem med varandra ... Läs mer , och skicka E-postmeddelanden från ett Excel Så här skickar du e-postmeddelanden från ett Excel-kalkylblad med VBA-skriptVår kodmall hjälper dig att konfigurera automatiserade e-postmeddelanden från Excel med hjälp av Collaboration Data Objects (CDO) och VBA-skript. Läs mer manus.

Det jag ska visa dig är hur man kombinerar Office Web Components med textfilsskript för att skapa en sömlös, automatiserad dataström från en platt textfil på din dator till din Office-produkt (i vårt fall Excel). Du kan använda samma teknik - med några små ändringar - i Word, Outlook eller till och med PowerPoint. Varje Office-produkt (eller någon annan produkt för den delen) som har en VBA-backend för utvecklare, låter dig använda den här tekniken.

Importera och skapa en graf från datafiler

Innan du kan skapa en graf från datafiler måste du aktivera några saker först. I det här exemplet ska jag visa dig hur du aktiverar dessa funktioner i Excel, men processen är nästan identisk i alla andra Office-produkter.

Först innan du kan göra någon VBA-utveckling måste du aktivera utvecklarfliken i verktygsfältet (om du inte redan har gjort det). För att göra detta, gå bara till Alternativ-menyn, klicka på "Anpassa band" och aktivera fliken "Utvecklare".

skapa en graf

Tillbaka i Excle ser du nu "Developer" dyka upp i menyerna. Klicka på den och klicka på “Design Mode”. Klicka sedan på "Visa kod" för att se VBA-redigeraren.

Hur man skapar en graf från rådatafiler i alla Office-produkter VBAChart21

Inne i redaktören är där du måste aktivera de referenser du behöver för koden jag ska ge dig att fungera. Se till att du har installerat tillägget för Office Web Components innan du gör detta, annars kommer Microsoft Chart-objektet inte att vara tillgängligt.

skapa graf
Klicka på Verktyg och sedan på Referenser, så ser du en lista över alla referenser som finns tillgängliga på ditt system. Om du inte vet vad dessa är - referenser är i princip bibliotek med kod och objekt som du kan dra in i ditt eget projekt. Dessa låter dig göra riktigt coola saker, beroende på vilken referens du aktiverar. Om du just har installerat Office Web Components i ditt system, måste du lägga till det som ett nytt bibliotek, så klicka på Bläddra-knappen för att hitta rätt .dll-fil.

skapa graf

Om du har installerat Office Web Components kallas DLL-filen OWC11.dll, och den lagras i c: \ programfiler \ gemensamma filer \ microsoft shared \ web component \ 11 \
skapa graf

Klicka på kryssrutan för referensen "Microsoft Office Web Components 11.0" och glöm inte att göra det välj "Microsoft Scripting Runtime" också, vilket ger dig tillgång till att läsa eller skriva från data filer.

Nu när du har lagt till referensen är det dags att lägga till det faktiska diagrammet på ditt ark. I Excel kan du lägga till kontroller genom att klicka på "Infoga" i utvecklarmenyn och klicka på den lilla verktygsikonen i hörnet under "ActiveX-kontroller".

Hur man skapar en graf från råa datafiler i alla Office-produkter VBAChart6

Bläddra till “Microsoft Office Chart 11.0” och klicka på OK.
skapa en graf gratis

Vi börjar äntligen komma igång. Så här ser MS Web Component-diagrammet ut som inbäddat i ett kalkylblad. Det ser samma ut som inbyggt i ett Word-dokument eller något annat.

skapa en graf gratis
Så när det gäller Excel vill jag att diagrammet omedelbart laddar data från datafilen när öppnar arbetsboken. För att göra detta går du in i kodredigeraren genom att klicka på "Visa kod" i utvecklarmenyn och dubbelklicka på arbetsboken för att se koden för arbetsboken. Ändra rullgardinsmenyn till “Öppna”. Detta är skriptet som kommer att köras när arbetsbokfilen först öppnas.

skapa en graf gratis
För att ladda diagrammet med data från kod behöver själva diagrammet ett namn. Gå tillbaka till kalkylarket, högerklicka på diagrammet och välj Egenskaper. Du ser fältet "Namn" med något liknande "ChartSpace1". Du kan ändra detta till vad som helst. Jag har kallat mina "MyChart".
Hur man skapar en graf från rådatafiler i alla Office-produkter VBAChart10
Bara så att du vet hur datafilen är - min är en textfil fylld med datavärden i kommaavgränsat format. Denna fil kan vara vad som helst - labdata som exporteras från sensorer, finansiell information som skrivs in i filen manuellt av praktikanter eller något annat alls. Du läser filen med din kod, så det spelar ingen roll hur data ser ut, så länge du vet hur varje rad kommer att se ut när ditt program läser in det.
skapa en graf
Så nu för den roliga delen. Jag ska visa dig koden i små avsnitt så att den inte är överväldigande och förklara vad koden gör. Den övre delen av koden kommer först att läsa in alla värden från textfilen och lagra dem i två arrayx, en för x-variabler (xVar) och en för y-variabler (yVar).

Dim fso som nytt FileSystemObject. Dim fnum. Dim MyFile As String. Dim strDataLine As String. Dim xVar () Som variant. Dim yVar () Som variant. Dim intNumOfLines As Integer MyFile = "c: \ files \ MyData.txt" fnum = FreeFile () Öppna MyFile för inmatning som nr 1. intNumOfLines = 0. Do While Not EOF (1) intNumOfLines = intNumOfLines + 1 Input # 1, strDataLine Input # 1, strDataLine. Slinga. Stäng # 1 ReDim xVar (intNumOfLines) ReDim yVar (intNumOfLines) Öppna MyFile för inmatning som nr 1. intNumOfLines = 0. Gör medan inte EOF (1) Input # 1, xVar (intNumOfLines) Input # 1, yVar (intNumOfLines) intNumOfLines = intNumOfLines + 1. Slinga. Stäng # 1

Denna kod kör i princip genom datafilen två gånger - första gången att dimensionera matriserna så att de är den exakta längden som krävs för att lagra uppgifterna, och sedan en andra gång för att läsa informationen i dessa arrayer. Om du inte vet vad en matris är - är det en variabel eller ett lagringsområde som kommer att innehålla en lång lista med värden som du kan komma åt genom att använda den ordning som värdet lagrades i matrisen. Den en laddade tredje skulle till exempel vara (3).

Nu när du har två av dessa matriser laddade med alla värden från din datafil är du redo att ladda dessa värden i diagrammet som du redan har bäddat in. Här är koden som gör det.

Med Sheet1.MyChart .Clear .Refresh Set oChart = .Charts. Lägg till oChart. HasTitle = Sann oChart. Titel. Bildtext = "Mina datavärden" 'oChart. Interiör. Färg = "blå" oChart. PlotArea. Interiör. Färg = "vit" Ställ in oSeries = oChart. SeriesCollection. Lägg till med oSeries .Caption = "Mina datavärden". SetData chDimKategorier, chDataLiteral, xVar .SetData chDimValues, chDataLiteral, yVar .Line. Färg = "blå". Linje. DashStyle = chLineDash .Line. Vikt = 2. Typ = chChartTypeLine slut med oChart. HasLegend = Sant. oChart. Legend. Position = chLegendPositionBottom. Sluta med

Det är "Sheet1.MyChart" som ansluter koden till det faktiska diagrammet du har bäddat in. Det är baserat på vad du namnger det. Detta kommer att vara fallet när du bädda in det i Word, Powerpoint eller någon annan Office-produkt. Du kommer inte att hänvisa till det med "Sheet1", men istället oavsett element som innehar diagrammet i så fall, till exempel "document1" i Word till exempel.

Koden ovan ställer sedan in märkning och färgning av diagrammet och laddar sedan värdena med ".setdata" -metoden för både x- och y-värden i det tvådimensionella datasättet. När koden ovan är klar körs följande graf.
skapa en graf

Dessa data är rakt ut ur textfilen. Den enda nackdelen här är att datafilerna bara behöver vara tvådimensionella om du vill använda koden ovan. Du kan lägga till fler värden i datauppsättningen, men du måste ändra koden ovan för att läsa in det tredje värdet varje gång genom loopen och sedan kopiera "SeriesCollection. Avsnittet Lägg till ”för att skapa en ny serie och lägg sedan till den i diagrammet på samma sätt.

Det kan verka komplicerat bara genom att läsa koden ovan, men när du har gjort en av dessa är det en bit kaka att ändra den för vad du behöver. Du kan använda samma diagram och liknande kod för att skapa ett stapeldiagram, ett spridningstabell eller vilken annan typ av diagram du vill använda med samma objekt. Det är mångsidigt och flexibelt - och det är ett kraftfullt verktyg i ditt arsenal om du är ett fan av automatisering för ökad produktivitet.

Lek med koden ovan och se om du kan ladda in data automatiskt i dina applikationer. Vilka kreativa användningar kan du tänka på för den här typen av automatisering? Dela dina tankar och feedback i kommentarerna nedan!

Ryan har en kandidatexamen i elektroteknik. Han har arbetat 13 år inom automationsteknik, 5 år inom IT och är nu en applikationsingenjör. Han var tidigare chefredaktör för MakeUseOf och talade vid nationella konferenser om datavisualisering och har varit med på nationell TV och radio.