Lägg till en bild till ett Microsoft-dokument med Office Web Components
Är det inte fantastiskt hur något som är så enkelt som att skapa ett diagram kan känna sig så komplicerat ibland? Oavsett om du använder Excel, Word, Powerpoint eller Access - ibland skulle det vara trevligt att bara sätta in ett snabbt diagram med en massa data utan att behöva göra en hel del konfiguration och röra om.
I den här artikeln ska jag visa dig hur du använder ett riktigt enkelt och enkelt VBA-objekt från Microsoft Office Web Components som låter dig infoga ett diagram direkt i ett dokument, en presentation eller något annat där du kan skapa VBA-kod för att köra den. Detta kan också innehålla icke-Microsoft-produkter som har ett VBA-back-end, vilket många gör.
I det här exemplet kommer jag att visa dig hur du aktiverar designläget i ditt program (i det här fallet använder vi Microsoft Word), lägger in kartobjektet i ditt projekt och sedan skriver du koden som fyller den in med data.
I några av mina tidigare VBA-artiklar nämnde några av er att uppgiften till hands var lite för komplicerad för alla som aldrig har skrivit kod tidigare. Jag hoppas att efter att ha läst den här artikeln kommer du att vara motiverad att prova med VBA. Koden som ingår här är väldigt enkel och enkel att skriva. Bädda in detta diagram är ett bra sätt att få dina händer smutsiga med VBA om du aldrig har provat det tidigare.
Om du känner till VBA är det här ett bra verktyg för att börja integrera snabba diagram i dina projekt med mycket mindre ansträngning än någonsin.
Aktiverar designläge
I det här exemplet ville jag sammanställa ett snabbt dokument med ett inbäddat diagram som visar data från den aktuella månaden för min budget samt det månatliga genomsnittet av utgifterna hittills hittills.
I det här exemplet kommer jag att placera dessa värden hårdkodade i en “array” precis inuti VBA-koden, men i slutändan kan du använda en rad olika tekniker för att ladda dessa arrayvariabler (en array är helt enkelt en variabel som innehåller en lista med värden) från andra källor, som ett externt kalkylblad, eller till och med en blankett där du anger värdena manuellt varje månad.
Om du vill lära dig hur du importerar data till Word från Excel kan du kolla in min artikel Hur man integrerar Excel-data i ett Word-dokument Hur man integrerar Excel-data i ett Word-dokument Under din arbetsvecka finns det förmodligen många gånger du tycker om att kopiera och klistra in information från Excel till Word, eller omvänd. Så här producerar man ofta skrivna rapporter ... Läs mer om ämnet. I den här artikeln ska vi fokusera på att skapa diagrammet för att visa data.
Nu när jag har startat mitt dokument vill jag komma in i koden. I Word eller Excel gör du det genom att klicka på “Fil”, “alternativ” och klicka sedan på alternativet Anpassa bandet. På höger sida av alternativen ser du “Anpassa bandet” kolumn och i “Huvudflikar” fält du borde se “Utvecklare” okontrollerat. Markera den rutan.
Tillbaka på ditt dokument borde du nu se “Utvecklare” menyalternativ tillgängligt. Inom denna meny hittar du “Designläge” knapp.
Klicka på Design Mode och klicka sedan på den mappen / verktygsikonen för “Legacy Tools”, och sedan i nedre högra hörnet av popup-rutan, under ActiveX Controls, klicka på “Fler kontroller” knapp.
Bläddra ner listan över tillgängliga kontroller tills du kommer till “Microsoft Office Chart xx.x”. Om du har Microsoft Office installerat på din dator kommer den här kontrollen sannolikt att vara tillgänglig.
När du har lagt in kontrollen i ditt dokument ser du det visas som en ruta som säger “Microsoft Office Web Components” inuti. Detta är i huvudsak ditt tomma diagram, redo att visa dina data.
Nästa steg är att skriva upp koden som ska ställa in din kartortyp och visa data. Om du vill att processen ska vara manuell, kan du placera en knapp på dokumentet som skulle ladda data i diagrammet, men i mitt fall ville jag att hela saken ska vara fullständigt automatiserad. I det ögonblick som jag öppnade dokumentet ville jag att det skulle köra skriptet som laddar diagrammet, så du kan göra det i koden (klicka på Visual Basic-knappen för att komma in i kodredigeraren) och välja dokumentobjektet och “Öppna” händelse.
Detta ställer automatiskt in en tom funktion som heter “Document_Open ()” in i din kod. Inuti den funktionen vill du klistra in följande kod.
Privat Sub Document_Open () Dim jag som heltal Dim oChart Dim oSeries1 Dim oSeries2 'Skapa arrayer för x-värdena och y-värdena Dim xValues Som variant, yValues1 Som variant, yValues2 Som variant xValues = Array ("Electric Bill", "Mortgage", "Phone Bill", _ "Uppvärmningsräkning", "Livsmedel", _ "Bensin", "Kläder", "Shopping") yValues1 = Array (124,53, 1250,24, 45,43, 253,54, 143,32, 259,85, 102,5, _ 569,94) yValues2 = Array (110, 1250, 50, 200, 130, 274, 95, _ 300)
Detta avsnitt av kod skapar tre arrayer. Den första (xValues) är i grunden din x-axel lista med beskrivningar för varje dataelement. I mitt fall skapar jag en kolumnstångsdiagram med yValues1, men du kan även skapa en linjediagram. Jag ska visa dig hur du gör det med yValues2. Klistra in följande segment av kod också.
Med ThisDocument.ChartSpace1 .Klar .Uppdatera Ange oChart = .Charts.Add oChart.HasTitle = True oChart.Title.Caption = "Månadsvisa budgetnummer vs genomsnitt"
Detta avsnitt av kod skapar faktiskt skapar diagrammet själv inom din “chartspace” behållare. Ditt diagram har inga data vid denna tidpunkt, men med ett par kommandon kan du ställa in titeln för diagrammet samt bildtexten. Nu är det dags att lägga till data. Klistra in följande kod under den kod du redan har klistrat för att göra det.
Ange oSeries1 = oChart.SeriesCollection.Add Med oSeries1 .Caption = "This Month" .SetData chDimCategories, chDataLiteral, xValues .SetData chDimValues, chDataLiteral, yValues1 .Typ = chChartTypeColumnClustered Sluta med 'Lägg till en annan serie i diagrammet med x-värdena och y-värdena 'från arraysna och sätt serietypen till ett linjediagram Ange oSeries = oChart.SeriesCollection.Add Med oSeries .Caption = "Genomsnittlig utgift" .SetData chDimCategories, chDataLiteral, xValues .SetData chDimValues, chDataLiteral, yValues2 .Typ = chChartTypeLineMarkers Sluta med
Koden ovan skapar två serier som ska visas i ditt diagram. Den första serien konfigurerar data som ska visas inuti kartobjektet som en “ColumnClustered” format och den andra serien är inställd för att visas som en “TypeLineMarkers” formatera. Detta kommer att visa båda uppsättningarna av värden på samma diagram, men det kommer att använda olika karttyper - som faktiskt kan vara ett mycket coolt sätt att visa och jämföra flera uppsättningar data.
Nu när data läggs till är allt som finns kvar att rita upp axeln och avsluta diagraminformationen.
'Formatera värdesaxlarnaoChart.Axes (chAxisPositionLeft) .NumberFormat = "$ #, ## 0" oChart.Axes (chAxisPositionLeft) .MajorUnit = 1000 'Visa legenden längst ner i diagrammet oChart.HasLegend = True oChart.Legend.Position = chLegendPositionBottomSluta medAvsluta Sub
Koden ovan formaterar siffrorna på den vänstra axeln för att visas i numeriskt dollarformat. Nästa rad konfigurerar den maximala gränsen för den vertikala axeln. Eftersom jag vet att enskilda objekt inte går över $ 1000, så ställer jag gränsen till max y-axeln till.
Spara dokumentet, stäng det, öppna det igen och voila-up kommer ditt diagram, laddas automatiskt med data från dina två arrayer.
Nu när du vet hur du lägger in diagrammen och automatiskt laddar in data i dem, tänk bara på möjligheterna. Allt du behöver göra är att få externa data i de här arraysna - kanske ett Excel-kalkylblad, kanske en Access-databas eller något annat - och plötsligt blir detta dokument ett mycket dynamiskt och värdefullt fönster i lagrade data.
Detta är bara toppen av iceburg med objekten MS Office Web Components. Jag började med diagrammen eftersom jag tycker att den här funktionen är den mest spännande. För att lägga till diagram till någon VBA-applikation du vill ha med ett mycket kort skript är mycket användbart och mycket kraftfullt.
Om du handlar om diagram, varför inte ge det här diagramobjektet ett försök? Känner du till några andra användbara kartläggningsobjekt för VBA? Hur lägger du in data i dina appar? Dela dina tankar och erfarenheter i kommentarfältet nedan.
Bildkredit: Tablet Finance Bar Diagram via Shutterstock
Utforska mer om: Microsoft Excel, Microsoft PowerPoint, Microsoft Word, Visual Basic Programmering.