Een grafiek toevoegen aan een Microsoft-document met Office-webcomponenten

Een grafiek toevoegen aan een Microsoft-document met Office-webcomponenten / ramen

Is het niet verbazingwekkend dat zoiets eenvoudigs als het maken van een grafiek soms zo ingewikkeld is? Of u Excel, Word, PowerPoint of Access gebruikt - soms zou het fijn zijn om gewoon een snel overzicht met een aantal gegevens in te voegen zonder al te veel te hoeven configureren en rotzooien.

In dit artikel laat ik u zien hoe u een echt handig en eenvoudig VBA-object van Microsoft Office Web Components kunt gebruiken, waarmee u een diagram rechtstreeks in een document, presentatie of iets anders kunt invoegen waar u VBA-code kunt maken om het uit te voeren. Dit kunnen ook niet-Microsoft-producten zijn die een VBA-back-end hebben, wat velen doen.

In dit voorbeeld laat ik u zien hoe u de ontwerpmodus in uw programma kunt inschakelen (in dit geval gebruiken we Microsoft Word), sluit u het diagramobject in uw project in en vervolgens schrijft u de code die het vult in met gegevens.

In sommige van mijn eerdere VBA-artikelen, zeiden enkelen van jullie dat de taak die voorhanden was iets te gecompliceerd was voor iemand die nog nooit code heeft geschreven. Ik hoop dat je na het lezen van dit artikel gemotiveerd bent om VBA te proberen. De hier opgenomen code is heel eenvoudig en eenvoudig te schrijven. Inbedding van deze kaart is een geweldige manier om je handen vuil te maken met VBA als je het nog nooit hebt geprobeerd.

Als je VBA kent, dan is dit een geweldig hulpmiddel om snel grafieken in je projecten te integreren met veel minder moeite dan ooit tevoren.

Ontwerpmodus inschakelen

In dit voorbeeld wilde ik een snel document samenstellen met een ingesloten grafiek waarin de gegevens van de huidige maand van mijn begroting worden weergegeven, evenals het maandelijkse gemiddelde van het bestedingsjaar tot nu toe..

In dit voorbeeld plaats ik die waarden hardgecodeerd in een “rangschikking” rechts in de VBA-code, maar uiteindelijk kunt u een verscheidenheid aan technieken gebruiken om die arrayvariabelen (een array is eenvoudigweg een variabele die een lijst met waarden bevat) uit andere bronnen, zoals een externe spreadsheet, of zelfs een formulier waarin u invoert, te laden de waarden elke maand handmatig invoeren.

Om meer te weten te komen over het importeren van gegevens in Word vanuit Excel, raadpleegt u mijn artikel Excel-gegevens integreren in een Word-document Excel-gegevens integreren in een Word-document Tijdens uw werkweek zijn er waarschijnlijk vele malen dat u merkt dat u zichzelf kopieert en plakken van informatie uit Excel in Word, of andersom. Dit is hoe mensen vaak geschreven rapporten produceren ... Lees meer over het onderwerp. Voor de doeleinden van dit artikel gaan we ons richten op het maken van de grafiek om gegevens weer te geven.

Nu ik mijn document ben begonnen, wil ik de code bekijken. In Word of Excel doet u dit door op te klikken “het dossier”, “opties” en klik vervolgens op de optie om het lint aan te passen. Aan de rechterkant van opties ziet u de “Pas het lint aan” kolom, en in de “Hoofdtabs” veld dat u zou moeten zien “Ontwikkelaar” aangevinkt. Vink het vakje aan.

Terug op uw document ziet u nu het “Ontwikkelaar” menu-item beschikbaar. In dit menu vindt u de “Ontwerpmodus” knop.

Klik op Ontwerpmodus en klik vervolgens op dat map- / gereedschapspictogram “Legacy-tools”, en klik vervolgens in de rechter benedenhoek van het pop-upvenster onder ActiveX-besturingselementen op “Meer bedieningselementen” knop.

Blader door de lijst met beschikbare besturingselementen totdat u zover bent “Microsoft Office Chart xx.x”. Als u Microsoft Office op uw computer hebt geïnstalleerd, is dit besturingselement waarschijnlijk beschikbaar.

Nadat u het besturingselement in uw document hebt ingevoegd, wordt dit weergegeven als een vak dat zegt “Microsoft Office Web Components” binnen. Dit is in wezen uw lege diagram, klaar om uw gegevens weer te geven.

De volgende stap is het schrijven van de code die uw diagramtype zal instellen en de gegevens zal weergeven. Als u wilt dat het proces handmatig is, kunt u een knop op het document plaatsen waarmee de gegevens in de grafiek worden geladen, maar in mijn geval wilde ik dat het hele proces volledig geautomatiseerd was. Op het moment dat ik het document open, wilde ik dat het het script zou uitvoeren dat de grafiek laadt, dus je kunt dit doen in de code (klik op de Visual Basic-knop om in de code-editor te komen), en het Document-object te selecteren, en de “Open” evenement.

Dit plaatst automatisch een lege functie met de naam “Document_Open ()” in uw code. Binnen die functie, wil je de volgende code plakken.

Privé Sub Document_Open ()  Dim i As Integer  Dim oChart  Dim oSeries1  Dim oSeries2  'Maak arrays voor de x-waarden en de y-waarden  Dim x Waarden Als Variant, yValues1 Als Variant, yValues2 Als Variant  xValues ​​= Array ("Electric Bill", "Mortgage", "Phone Bill", _  "Heating Bill", "Groceries", _  "Benzine", "Kleding", "Winkelen")  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)
 

Met dit gedeelte van de code worden drie arrays gemaakt. De eerste (xValues) is in feite uw x-as lijst met beschrijvingen voor elk gegevenselement. In mijn geval maak ik een kolomgrafiek met yValues1, maar je kunt ook een lijngrafiek maken. Ik zal je laten zien hoe je dat doet met yValues2. Plak nu ook het volgende codesegment.

 Met ThisDocument.ChartSpace1  .Duidelijk  .verversen  Stel oChart = .Charts.Add in  oChart.HasTitle = True  oChart.Title.Caption = "Maandelijkse budgetnummers versus gemiddelde"
 

Met dit gedeelte van de codeaanmaak wordt feitelijk het diagram zelf gemaakt binnen uw “ChartSpace” houder. Je diagram bevat op dit moment geen gegevens, maar met een paar opdrachten kun je zowel de titel voor het diagram als het bijschrift instellen. Nu is het tijd om de gegevens toe te voegen. Plak de volgende code onder de code die u al hebt geplakt om dit te doen.

Stel oSeries1 = oChart.SeriesCollection.Add in  Met oSeries1  .Caption = "Deze maand"  .SetData chDimCategories, chDataLiteral, xValues  .SetData chDimValues, chDataLiteral, yValues1  .Type = chChartTypeColumnClustered  Eindigt met  'Voeg een andere reeks toe aan het diagram met de x-waarden en y-waarden  'uit de arrays en stel het serietype in op een lijndiagram  Stel oSeries = oChart.SeriesCollection.Add in  Met oSeries  .Caption = "Gemiddelde uitgaven"  .SetData chDimCategories, chDataLiteral, xValues  .SetData chDimValues, chDataLiteral, yValues2  .Type = chChartTypeLineMarkers  Eindigt met

De bovenstaande code maakt twee reeksen om weer te geven in uw grafiek. De eerste reeks configureert de gegevens die binnen het diagramobject moeten worden weergegeven als een “ColumnClustered” formaat en de tweede reeks is ingesteld om te worden weergegeven als een “TypeLineMarkers” formaat. Hiermee worden beide reeksen waarden in hetzelfde diagram weergegeven, maar worden verschillende diagramtypen gebruikt. Dit kan een erg leuke manier zijn om meerdere sets met gegevens weer te geven en te vergelijken.

Nu de gegevens zijn toegevoegd, hoeft u alleen maar de as op te ruimen en de grafiekdetails af te ronden.

 'Formatteer de waardeassen
 oChart.Axes (chAxisPositionLeft) .NumberFormat = "$ #, ## 0"  oChart.Axes (chAxisPositionLeft) .MajorUnit = 1000  'Laat de legenda onderaan het diagram zien  oChart.HasLegend = Waar  oChart.Legend.Position = chLegendPositionBottom
 Eindigt met
End Sub

De bovenstaande code formatteert de nummers op de linkeras om weer te geven in het numerieke dollarformaat. De volgende regel configureert de maximale limiet van de verticale as. Omdat ik weet dat individuele items niet meer dan $ 1000 zullen zijn, is dat waar ik de maximale y-aslimiet op ingesteld heb.

Sla het document op, sluit het, open opnieuw en voila-up komt in uw diagram, automatisch geladen met de gegevens van uw twee arrays.

Nu u weet hoe u de grafieken invoegt en automatisch gegevens erin laadt, moet u gewoon nadenken over de mogelijkheden. Het enige dat u hoeft te doen is externe gegevens in die arrays te krijgen - misschien een Excel-spreadsheet, misschien een Access-database of iets anders - en plotseling wordt dit document een zeer dynamisch en waardevol venster in de opgeslagen gegevens.

Dit is slechts het topje van de iceburg met de MS Office Web Components-objecten. Ik ben begonnen met de grafieken, omdat ik vind dat deze functie het meest opwindend is. Het toevoegen van grafieken aan elke gewenste VBA-toepassing met een zeer kort script is erg handig en zeer krachtig.

Als u alles wilt weten over diagrammen, waarom probeert u dit diagramobject dan niet te proberen? Kent u andere handige diagramobjecten voor VBA? Hoe sluit u gegevens in uw apps in? Deel uw mening en ervaringen in de opmerkingen hieronder.

Image Credit: Tablet Finance-staafdiagram via Shutterstock

Ontdek meer over: Microsoft Excel, Microsoft PowerPoint, Microsoft Word, Visual Basic Programming.