2016-07-18 3 views
0

Итак, я пытаюсь вставить столбец в заметки слайдов PowerPoint, но он захватывает только одну ячейку и вставляет ее в первый слайд и не переходит к следующему слайду и вставляет следующую ячейку в ноты второго слайда.Вставка в Excel Range Into Powerpoint Notes раздел

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 

ответ

0

Вы устанавливаете фиксированную ссылку на слайд 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 
+0

Привет спасибо за ваш ответ. Я не уверен, где добавить этот оператор в мой код? – user3772623

 Смежные вопросы

  • Нет связанных вопросов^_^