All pastes #798029 Raw Edit

hirak99

public text v1 · immutable
#798029 ·published 2007-11-26 14:53 UTC
rendered paste body
Function AddSlide(Title$) As PowerPoint.Slide
Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Set PPApp = GetObject(, "Powerpoint.Application")
Set PPPres = PPApp.ActivePresentation
PPApp.ActiveWindow.ViewType = ppViewNormal
SlideCount% = PPPres.Slides.Count
Set PPSlide = PPPres.Slides.Add(SlideCount + 1, ppLayoutTitleOnly)
PPSlide.Shapes("Rectangle 2").TextFrame.TextRange = Title
PPApp.ActiveWindow.View.GotoSlide PPSlide.SlideIndex
Set AddSlide = PPSlide
End Function

Sub ChartsAndTitlesToPresentation(PPSlide As PowerPoint.Slide, ChartObject As Chart, Position%)

Dim PPApp As PowerPoint.Application
Set PPApp = GetObject(, "Powerpoint.Application")

Dim top_indent(4), left_indent(4) As Double
left_indent(0) = 36
left_indent(1) = 341
left_indent(2) = 36
left_indent(3) = 341
top_indent(0) = 108
top_indent(1) = 108
top_indent(2) = 270
top_indent(3) = 270
    
    'ChartObject.CopyPicture appearance:=xlScreen, Format:=xlPicture
    ChartObject.ChartArea.Copy
     'With Selection
                 ' copy chart as a picture
      '           .CopyPicture
                ' .CopyPicture _
                 '    Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture
     
                 ' restore title
     'End With
    
     With PPSlide
         ' paste and select the chart picture
         .Shapes.PasteSpecial(ppPasteEnhancedMetafile).Select
         ' align the chart
         PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
         PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True
         With PPApp.ActiveWindow.Selection.ShapeRange
                     .LockAspectRatio = msoFalse
                     .Width = 564
                     .Height = 360
                     .left = left_indent(Position)
                     .top = top_indent(Position)
         End With
     End With
End Sub

Function GetChartByName(ChartName$) As Chart
Dim ch As Chart
For i% = 1 To ActiveSheet.ChartObjects.Count
    Set ch = ActiveSheet.ChartObjects(i).Chart
    If Trim(ch.ChartTitle.Text) = Trim(ChartName) Then
        Set GetChartByName = ch
    End If
Next
End Function

Sub AddChart(PPSlide As PowerPoint.Slide, Position%, ChartName$)
    Dim ch As Chart
    Set ch = GetChartByName(ChartName$)
    ch.HasLegend = False
    ChartsAndTitlesToPresentation PPSlide, ch, Position
End Sub

Sub ToPowerpoint()
    Sheets("Charts").Select
    Dim PPSlide As PowerPoint.Slide
    For i% = 1 To 3
        Set PPSlide = AddSlide(ActiveSheet.ChartObjects(i).Chart.ChartTitle.Text)
        ChartsAndTitlesToPresentation PPSlide, ActiveSheet.ChartObjects(i).Chart, 0
    Next
End Sub

Sub AddSlides(WkSheet$)
    Dim PPSlide As PowerPoint.Slide
    Sheets(WkSheet).Activate
    Set PPSlide = AddSlide(WkSheet)
    AddChart PPSlide, 0, "% 60 Plus (MA3)"
    AddChart PPSlide, 1, "% Chg Off  (Ann.) (MA3)"
    AddChart PPSlide, 2, "% $ 60 Plus (MA3)"
    AddChart PPSlide, 3, "% Bankrupcies (Ann.) (MA3)"
    Set PPSlide = AddSlide(WkSheet)
    AddChart PPSlide, 0, "Avg Bureau Balance"
    AddChart PPSlide, 1, "Avg. Balance"
    AddChart PPSlide, 2, "Utilization"
    AddChart PPSlide, 3, "Net Payment Rate"
End Sub

Sub DoAll()
    AddSlides "<660"
    AddSlides "660-<720"
    AddSlides "720-<760"
    AddSlides "760-<800"
    AddSlides "800+"
End Sub