2017-04-20 3 views
0

J'ai créé un PowerPoint avec des dispositions de diapositives personnalisées. Je veux être en mesure de créer une nouvelle diapositive en utilisant l'une de ces dispositions personnalisées en utilisant Excel VBA, mais je ne peux pas comprendre la syntaxe correcte.Ajouter une disposition de diapositive personnalisée dans PowerPoint à l'aide d'Excel VBA?

C'est le code que j'ai actuellement:

Sub runPPT() 

Application.ScreenUpdating = False 

Dim wb As Workbook 
Set wb = ThisWorkbook 

Dim ws As Worksheet 
Set ws = wb.Sheets("SG2") 

Dim pptName As String 
Dim ppt As Object 
Dim myPres As Object 
Dim slds As Object 
Dim sld As Object 

MsgBox ("Please choose PowerPoint to open.") 
pptName = openDialog() 
Set ppt = CreateObject("PowerPoint.Application") 
Set myPres = ppt.Presentations.Open(pptName) 

Set slds = myPres.Slides 
'This is where I want to add my custom layout 
'My layouts all have similar names like "Gate 2 Main" if that helps 
Set sld = slds.AddSlides(Slides.Count + 1, ActivePresentation.SlideMaster.CustomLayouts(1)) 

Application.ScreenUpdating = True 
End Sub 


Private Function openDialog() 
Dim fd As Office.FileDialog 
Dim txtFileName As String 
Set fd = Application.FileDialog(msoFileDialogFilePicker) 
With fd 
    .AllowMultiSelect = False 
    ' Set the title of the dialog box. 
    .Title = "Please select the file." 

    ' Clear out the current filters, and add our own. 
    .Filters.Clear 

    ' Show the dialog box. If the .Show method returns True, the 
    ' user picked at least one file. If the .Show method returns 
    ' False, the user clicked Cancel. 
    If .Show = True Then 

    txtFileName = .SelectedItems(1) 'replace txtFileName with your textbox 

    End If 

End With 

openDialog = txtFileName 

End Function 
+1

S'il vous plaît expliquer le problème exact dans votre code actuel. –

Répondre

1

j'ai pu résoudre mon problème en changeant mon code à ce qui suit:

Sub runPPT() 

    Application.ScreenUpdating = False 

    Dim wb As Workbook 
    Set wb = ThisWorkbook 

    Dim ws As Worksheet 
    Set ws = wb.Sheets("SG2") 

    Dim pptName As String 
    Dim ppt As PowerPoint.Application 
    Dim myPres As PowerPoint.Presentation 
    Dim slds As PowerPoint.Slides 
    Dim sld As PowerPoint.slide 

    Dim oLayout As CustomLayout 

    MsgBox ("Please choose PowerPoint to open.") 
    pptName = openDialog() 
    Set ppt = CreateObject("PowerPoint.Application") 
    Set myPres = ppt.Presentations.Open(pptName) 

    Set slds = myPres.Slides 
    Set sld = slds.Add(myPres.Slides.Count + 1, ppLayoutBlank) 

    For Each oLayout In myPres.Designs("Gate Main").SlideMaster.CustomLayouts 
     If oLayout.Name = "Gate 2 Main" Then 
      sld.CustomLayout = oLayout 
      Exit For 
     End If 
    Next 

    Application.ScreenUpdating = True 

End Sub 


Private Function openDialog() 

    Dim fd As Office.FileDialog 

    Dim txtFileName As String 

    Set fd = Application.FileDialog(msoFileDialogFilePicker) 

    With fd 

    .AllowMultiSelect = False 

    ' Set the title of the dialog box. 
    .Title = "Please select the file." 

    ' Clear out the current filters, and add our own. 
    .Filters.Clear 

    ' Show the dialog box. If the .Show method returns True, the 
    ' user picked at least one file. If the .Show method returns 
    ' False, the user clicked Cancel. 
    If .Show = True Then 

     txtFileName = .SelectedItems(1) 'replace txtFileName with your textbox 

    End If 

    End With 

    openDialog = txtFileName 

End Function