EXCEL VBA自动向Powerpoint添加新幻灯片

时间:2016-04-13 08:08:24

标签: excel vba excel-vba powerpoint powerpoint-vba

这是我将内容从Excel导出到PowerPoint的代码。我的问题是我在演示文稿中只有一张幻灯片。满足标准时,VBA应自动增加幻灯片并填充它。幻灯片应该具有相同的布局。在每个IF和Else循环后,我需要为下一个迭代添加一个新幻灯片。使用此代码,我收到Active X组件无法创建对象的错误。有帮助吗?

Dim oPPTShape As PowerPoint.Shape
Dim oPPTFile As PowerPoint.Presentation
Dim SlideNum As Integer
Dim pptSlide As PowerPoint.Slide
Dim pptLayout As CustomLayout
Dim strPresPath As String, strExcelFilePath As String, strNewPresPath As String
                strPresPath = "C:\Users\asehgal\Desktop\OPL\Presentation1.pptx"

            On Error Resume Next
            Set oPPTApp = GetObject(, "PowerPoint.Application")

                If oPPTApp Is Nothing Then



                Set oPPTApp = CreateObject("PowerPoint.Application")
                oPPTApp.Visible = True 'msoTrue

                End If
                On Error GoTo 0
                Set oPPTFile = oPPTApp.Presentations.Open(strPresPath)
                SlideNum = 1
                oPPTFile.Slides(SlideNum).Select
                Set oPPTShape = oPPTFile.Slides(SlideNum).Shapes("Table 1")

                On Error Resume Next
                If oPPTApp.Windows.Count > 0 Then
                Set oPPTFile = oPPTApp.ActivePresentation

                Set pptSlide = oPPTFile.Slides(oPPTApp.ActiveWindow.Selection.SlideRange.SlideIndex)
                Else

                    Set oPPTFile = oPPTApp.Presentations.Add

                    Set pptSlide = oPPTFile.Slides.AddSlide(1, ppLayout)
                End If
                On Error GoTo 0      
                Do
            'if topics are same
            If (arrThema(p, 0) = arrThema(p + 1, 0)) Then

                With oPPTShape.Table
                .cell(1, 1).Shape.TextFrame.TextRange.text = arrThema(p, 0)
                'if true Adda new slide here for the next iteration
                End With

                'If subtopics are also same
                If (arrThema(p, 1) = arrThema(p + 1, 1)) Then


                Else 'if subtopics are different

                With oPPTShape.Table

                .cell(2, 1).Shape.TextFrame.TextRange.text = arrThema(p, 1)
                .cell(3, 2).Shape.TextFrame.TextRange.text = Beschreibung(p)
                'if true Add a new slide here for the next iteration            
                End With

                oPPTFile.Slides(SlideNum).Select
                Set oPPTShape = oPPTFile.Slides(SlideNum).Shapes("Table 1")
                With oPPTShape.Table
                .cell(2, 1).Shape.TextFrame.TextRange.text = arrThema(p + 1, 1)
                .cell(3, 2).Shape.TextFrame.TextRange.text = Beschreibung(p + 1)
                'if true Adda new slide here for the next iteration

                End With

               ' MsgBox "Description : " & Beschreibung(p)
                End If


                Else


                'add a new slide here and add the details there
                With oPPTShape.Table
                .cell(1, 1).Shape.TextFrame.TextRange.text = arrThema(p, 0)
                .cell(2, 1).Shape.TextFrame.TextRange.text = arrThema(p, 1)
                .cell(3, 2).Shape.TextFrame.TextRange.text = Beschreibung(p)

    'if true Adda new slide here for the next iteration

                    'code for adding a new slide which does not work
                Set pptLayout = ActivePresentation.Slides(1).CustomLayout
               Set pptSlide = ActivePresentation.Slides.AddSlide(2, pptLayout)

                End With



            End If
            p = p + 1
           Loop Until p = noThema

1 个答案:

答案 0 :(得分:0)

在您需要插入新幻灯片时使用此代码,它会将幻灯片添加到演示文稿的末尾并应用您的自定义布局

Set pptSlide = oPPTApp.Slides.AddSlide(oPPTApp.Slides.Count + 1, pptLayout) 

修改

道歉,我自己无法测试。尝试上面编辑的代码