Powerpoint VBA combina arquivos pptx em um

0

Eu vi uma postagem como essa antes, mas não consegui adicionar mais comentários e não consegui implementar a solução. Então, por favor, não critique :) Eu basicamente preciso abrir um arquivo pptx vazio e dar uma localização de uma pasta que consiste em digamos 20 outras apresentações pptx (texto, gráficos, imagens) e adicioná-las (automaticamente) ao arquivo aberto. Todo o VBA que experimentei até agora não está funcionando para mim, então, por favor, coloque comentários se você puder fornecer uma amostra de VBA para amadores como eu!

Muito apreciado!

Como recomendado por um dos mestres aqui, aqui está o código que eu usei e substituí o strFPath pela pasta. Eu incluí todos os arquivos pptx que eu queria que fossem inseridos no arquivo pptx da apresentação MASTER e substituísse o strSpec por um dos os arquivos da pasta eu coloquei os outros arquivos para que ele seja inserido, mas sem sorte de funcionar.

Sub Combine_fromFolder() 
    Dim strFPath As String 
    Dim strSpec As String 
    Dim strFileName As String 
    Dim oTarget As Presentation 
    Set oTarget = Application.Presentations.Add(WithWindow:=True) 
    strFPath = "C:\Users\John\Desktop\Test\" ' Edit this
    strSpec = "*.PPTX" 'to include PPT etc use "*.PP*"
    strFileName = Dir$(strFPath & strSpec) 
    While strFileName <> "" 
        oTarget.Slides.InsertFromFile strFileName, oTarget.Slides.Count, 1, 1 
        strFileName = Dir() 
    Wend 
End Sub 
    
por anton86 23.03.2016 / 16:47

1 resposta

0

Eu não consegui o que você tem que trabalhar. É bastante antigo, então talvez não seja compatível com as versões posteriores do PowerPoint.

Eu encontrei o seguinte VBA em PPTools , Solução 2, que funciona para fazer o que você descreveu. Única exceção, você não precisa alterar o caminho porque este usa a pasta onde os arquivos que você deseja combinar residem.

Existem dois Subs neste código que devem ser usados juntos.

  • Abra um novo arquivo de apresentação e salve-o na pasta em todos os arquivos você quer combinar estão dentro (você pode movê-lo mais tarde)
  • Cole o código na janela do VBA
  • Execute a macro InsertAllSlides e ela será combinada.
Sub InsertAllSlides()
'  Insert all slides from all presentations in the same folder as this one
'  INTO this one; do not attempt to insert THIS file into itself, though.

    Dim vArray() As String
    Dim x As Long

    ' Change "*.PPT" to "*.PPTX" or whatever if necessary:
    EnumerateFiles ActivePresentation.Path & "\", "*.PPT", vArray

    With ActivePresentation
        For x = 1 To UBound(vArray)
            If Len(vArray(x)) > 0 Then
                .Slides.InsertFromFile vArray(x), .Slides.Count
            End If
        Next
    End With

End Sub

Sub EnumerateFiles(ByVal sDirectory As String, _
    ByVal sFileSpec As String, _
    ByRef vArray As Variant)
    ' collect all files matching the file spec into vArray, an array of strings

    Dim sTemp As String
    ReDim vArray(1 To 1)

    sTemp = Dir$(sDirectory & sFileSpec)
    Do While Len(sTemp) > 0
        ' NOT the "mother ship" ... current presentation
        If sTemp <> ActivePresentation.Name Then
            ReDim Preserve vArray(1 To UBound(vArray) + 1)
            vArray(UBound(vArray)) = sDirectory & sTemp
        End If
        sTemp = Dir$
    Loop

End Sub
    
por 23.03.2016 / 18:27