简体   繁体   中英

foreach chart in powerpoint slide ?

I have 2 questions.

1. I have VS2010 with Frameowrk 3.5 and need to lift some data and text and update some existing Powerpoint files. What would be the best approach ? I'm new to VSTO but have been using C# for quite a while.

2. I've been testing with the Interop libraries (Microsoft.Office.Interop.PowerPoint) So I need to open a powerpoint and change some text in all slides and charts. Slides and sahapes are no problem but charts seem to be a problem. There doesn't seem to be a charts collection and if (shape.Type == Office.MsoShapeType.msoChart) returns false.

I've done this previously in VBA and used the code below

For Each chtChart In sht.ChartObjects
        chtChart.Chart.ChartTitle.Characters.Text = Replace    (chtChart.Chart.ChartTitle.Characters.Text, "{month}", strCurrent,    VbCompareMethod.vbTextCompare)
Next chtChart

I just really want to do the same.

Am I missing something really obvious ?

Any pointers gratefully received.

Steve

There are several types of charts you might run across in PPT. Ignoring the old MSGraph charts, you might find charts that the user has added using Insert | Chart.

These will be shapes of .Type = 3 (msoChart). Here's an example of how you get at the chart and/or chart data for these:

Sub ShowChartData()

Dim oSh As Shape
Dim oCht As Chart
Dim oData As ChartData

Dim x As Long
Dim y As Long
Dim sTemp As String

Set oSh = ActiveWindow.Selection.ShapeRange(1)

Set oCht = oSh.Chart
oCht.ChartData.Activate
Set oData = oCht.ChartData

For x = 1 To 4
    For y = 1 To 4
        sTemp = sTemp & oData.Workbook.Worksheets("Sheet1").Cells(x, y) & vbTab
    Next    ' y/cell
    Debug.Print sTemp
    sTemp = ""
Next ' x/row

' do this to get rid of visible worksheet
oData.Workbook.Close

Set oData = Nothing
Set oCht = Nothing

End Sub

Charts might also be linked or embedded objects copy/pasted from Excel.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM