Powerpoint VBA объединить pptx файлы в один

Я видел такой пост раньше, но не мог добавить больше комментариев и не мог реализовать решение. Поэтому, пожалуйста, не критикуйте 🙂 мне в основном нужно открыть пустой файл pptx и указать местоположение папки, которая состоит, скажем, из 20 других презентаций pptx (текст, графики, изображения) и добавить их (автоматически) в открытый файл. Все VBA я пробовал до сих пор не работает для меня, поэтому, пожалуйста, поставьте комментарии, если вы можете предоставить образец VBA для любителей, как я!

высоко ценится!

как советовал один из мастеров здесь, вот код, который я использовал и заменил strFPath с папке я включил все PPTX файлы, которые я хотел вставить в основную презентацию PPTX файл и заменил strSpec с одним из файлов из папки я поместил эти файлы, так что он подставляется, но не повезло это работает.

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:UsersJohnDesktopTest" ' 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 
2
задан anton86
29.04.2023 9:13 Количество просмотров материала 2912
Распечатать страницу

1 ответ

Я не мог получить один, вы должны работать. Он довольно старый, поэтому, возможно, он не совместим с более поздними версиями PowerPoint.

Я нашел следующий VBA в PPTools, решение 2, которое работает для того чтобы сделать чего вы описали. Единственное исключение, вам не нужно менять путь, потому что он использует папку, в которой находятся файлы, которые вы хотите объединить.

есть два Subs в этом коде, который должен использоваться вместе.

  • открыть новый файл презентации и сохранить его в папку со всеми файлами вы хотите объединить находятся в (вы можете переместить его позже)
  • вставьте код в окно VBA
  • запустить InsertAllSlides макрос и он будет объединять их.

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
0
отвечен CharlieRB 2023-04-30 17:01

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх