Вставка диапазона Excel в раздел заметок Powerpoint

Поэтому я пытаюсь вставить столбец в примечания к слайду PowerPoint, но он берет только одну ячейку и вставляет ее в первый слайд, а не переходит к следующему слайду и вставляет следующую ячейку в примечания 2-го слайда.

Sub Notes() 


    Dim PPTApp As PowerPoint.Application 
    Dim PPTPres As PowerPoint.Presentation 
    Dim PPTSlide As PowerPoint.Slide 
    Dim PPTShape As PowerPoint.Shape 
    Dim strNotes As String 
     ' Amended Dim Sh As Shape to...
    Dim Sh As PowerPoint.Shape 


     'launch powerpoint application
    Set PPTApp = New PowerPoint.Application 
    PPTApp.Activate 
     'open powerpoint presentation for macmahon off the intranet
    Set PPTPres = PPTApp.Presentations.Open("C:\Users)


    Sheets("Raw Data").Select 
    Range("M2:M26").Select 


    Set PPTSlide = PPTPres.Slides(1) 


    On Error GoTo errHandler 




    Do While ActiveCell.Value <> "" 
        ActiveCell.Copy 
        With PPTSlide 
            If PPTSlide.NotesPage.Shapes.Count = 0 Then 'If no shapes to take Notes then add a shape first
                PPTSlide.NotesPage.Shapes.AddShape msoShapeRectangle, 0, 0, 0, 0 
                Sh = PPTSlide.NotesPage.Shapes(1) 
                 'Code change here - did not recognize Sh.TextFrame.TextRange.Text.Paste
                 'So, I set the object text to value of the active cell and seemed to do the trick


                Sh.TextFrame.TextRange.Text = ActiveCell.Value 
            Else 'has shapes, so see if they take text
                For Each Sh In PPTSlide.NotesPage.Shapes 
                    If Sh.HasTextFrame Then 
                         'Code change here - did not recognize Sh.TextFrame.TextRange.Text.Paste
                         'So, I set the object text to value of the active cell and seemed to do the trick
                        Sh.TextFrame.TextRange.Text = ActiveCell.Value 
                    End If 
                Next Sh 
            End If 
        End With 
        Set PPTSlide = PPTPres.Slides.Add(PPTPres.Slides.Count + 1, ppLayoutText) 
        ActiveCell.Offset(1, 0).Select 
    Loop 
    Exit Sub 
errHandler: 
    MsgBox Err.Number & vbTab & Err.Description, vbCritical, "Error" 
End Sub

1 ответ

Вы устанавливаете фиксированную ссылку на слайд 1 в этой строке:

Set PPTSlide = PPTPres.Slides(1)

Вместо этого, оберните код, чтобы скопировать и вставить содержимое ячейки в цикл For... Next, который проходит по нужным слайдам. Например, чтобы просмотреть все слайды в презентации:

For Each PPTSlide In PPTPres.Slides
  With PPTSlide
    ' Do the things you need to do on this slide
  End With
Next

Или управляйте заранее определенным диапазоном слайдов:

Dim lSlideIndex As Long
For lSlideIndex = 2 to 5 ' Process slides 2 to 5
  With PPTPres.Slides(lSlideIndex)
    ' Do the things you need to do on this slide
  End With
Next
Другие вопросы по тегам