Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PPT 2007] excel werkblad grafiek bewerken dmv VBA

Pagina: 1
Acties:

  • apophis4u
  • Registratie: Oktober 2002
  • Laatst online: 24-11 07:41
na enig speurwerk online ben ik nog niet tot een concreet antwoord gekomen voor mijn uitdaging:

Vanuit MS Access een tabel / query direct in het excel werkblad wegschrijven van een grafiek in powerpoint 2007

Voorbeeld proces:
1 Een x aantal analyses (query's & output tabellen) zijn voor geprogrammeerd in Access
2 Vanuit Access moet Powerpoint geopend worden
3 slides toegevoegd met grafieken
4 grafieken bijwerken met de tabel/ query inhoud vanuit access
5 powerpoint opslaan

Eerder heb ik dit al werkend gekregen voor Office 2003 mbv VBA, maar ben nu een functie aan het schrijven die ook voor 2007 moet gaan werken straks.

Nu hebben ze bij MS de grafiekobjecten veranderd: in plaats van de MS Graph builder hebben ze nu Excel 2007 grafiek objecten erin gezet. Het issue treedt nu dus ook op bij stap 4 waarbij ik het excel object achter het grafiek object wil aanroepen om daar data in weg te schrijven.

Nu vind ik verschillende 'oplossingen':
- een poging die ik niet werkend kan krijgen:
http://www.eggheadcafe.co...data-in-embedded-exc.aspx

- meldingen dat het simpelweg niet meer mogelijk is om dmv VBA grafieken bij te werken in PowerPoint:
http://www.experts-exchan...owerpoint/Q_23805552.html
http://www.pptfaq.com/FAQ00889.htm
If you need to automate charts in PowerPoint 2007, it'd be best if you change your name and move to another town where nobody knows that you do PowerPoint programming.
The chart objects you get in PowerPoint 2007 when you add a new chart expose no methods or properties to VBA. In short, you can't do anything with them in code.


In het forum van egghead lijken ze het wel voor elkaar te krijgen, maar bij mij wil hij dit stuk:
Set oxl = oPPTShape.OLEFormat.Object
niet accepteren

[code=VBA]

Dim oPPTFile As PowerPoint.Presentation
Dim oPPTShape As PowerPoint.Shape

Set oPPTFile = PowerPoint.ActivePresentation
oPPTFile.Slides(2).Select
Set oPPTShape = oPPTFile.Slides(2).Shapes("columnChart")

Dim oxl As Excel.Workbook
Dim xchart As Excel.Chart

' Explicitly DIM the xlsheet variable
Dim xlsheet As Excel.Worksheet

Set oxl = oPPTShape.OLEFormat.Object
Set xchart = oxl.Charts(1)
Set xlsheet = oxl.Worksheets(1)
xlsheet.Cells(2, 2) = 123
xlsheet.Cells(3, 2) = 234
xlsheet.Cells(2, 3) = 345
xlsheet.Cells(3, 3) = 456
xlsheet.Cells(2, 4) = -11
xlsheet.Cells(3, 4) = -1
xlsheet.Cells(2, 5) = 8
xlsheet.Cells(3, 5) = 4


Set xlsheet = Nothing
Set xchart = Nothing
Set oxl = Nothing

[/code=VBA]

Een specialist weet veel van weinig en leert steeds meer van steeds minder, tot hij uiteindelijk alles weet van niets.


Verwijderd

The chart objects you get in PowerPoint 2007 when you add a new chart expose no methods or properties to VBA. In short, you can't do anything with them in code.
hier lijkt wel iets speciaals aan de hand te zijn, als je op ms's msdn site in het object model naar de chartobjectmembers van pp 2007 gaat kijken, kom je op een niet bestaande pagina terecht.
maar de fout doet zich waarschijnlijk voor omdat je nog geen bestaande excelgrafiek in de slide hebt staan. de code van eggheadcafe activeert namelijk zo'n reeds bestaande excelgrafiek die dan verder gemanipuleerd wordt.
van nul vertrekken kan ook, maar dan moet je een stap toevoegen en eerst de grafiek geautomatiseerd in excel (via createobject("excel.application") enz.) aanmaken en daarna in de slide plakken.
maar ook het rechtstreeks aanmaken van zo'n object in de slide zou moeten lukken, theoretisch althans komt het neer op het vinden van de juiste ole-identifier.

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Vanaf SP2 kan het:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub UglyCode()
    Set ppt = PowerPoint.ActivePresentation
    Set pptSlide = ppt.Slides(1)
    
    oldWindowState = ppt.Application.WindowState
    ppt.Application.WindowState = ppWindowNormal
    oldWith = ppt.Application.Width
    Set chartShape = pptSlide.Shapes.AddChart(XlChartType.xlBarClustered)
    Set oxl = chartShape.Chart.ChartData.Workbook    
    ppt.Application.Width = oldWith
    ppt.Application.WindowState = oldWindowState
    
    Set xlsheet = oxl.Worksheets(1)
    xlsheet.ListObjects(1).Resize xlsheet.Range("$A$1:$E$3")
    xlsheet.Cells(2, 2) = 123
    xlsheet.Cells(3, 2) = 234
    xlsheet.Cells(2, 3) = 345
    xlsheet.Cells(3, 3) = 456
    xlsheet.Cells(2, 4) = -11
    xlsheet.Cells(3, 4) = -1
    xlsheet.Cells(2, 5) = 8
    xlsheet.Cells(3, 5) = 4
    
    chartShape.Chart.Refresh
    oxl.Application.Quit
End Sub

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • apophis4u
  • Registratie: Oktober 2002
  • Laatst online: 24-11 07:41
Bedankt voor de reacties!
Hier ga ik even naar kijken; vooral SP2 even zien te bemachtigen (wordt wellicht lastig ivm policies enzo).

In mijn 'template' powerpoint had ik al wel een Grafiek object geplaatst, dus deze kon ik ook selecteren (columnChart).
Wat ik anders inderdaad wilde doen is via Excel de tussenstap maken om de grafieken te vullen en dan door te kopieren naar powerpoint.

Een specialist weet veel van weinig en leert steeds meer van steeds minder, tot hij uiteindelijk alles weet van niets.