Câu hỏi Powerpoint VBA kết hợp các tệp pptx thành một


Tôi đã thấy một bài đăng như thế này trước đây nhưng không thể thêm nhiều nhận xét và không thể triển khai giải pháp. Vì vậy, xin đừng chỉ trích :) Tôi về cơ bản cần mở một tập tin pptx rỗng và đưa ra một vị trí của một thư mục bao gồm cho phép nói 20 bài thuyết trình pptx khác (văn bản, đồ thị, hình ảnh) và thêm những (tự động) vào tập tin mở. Tất cả các VBA tôi đã cố gắng cho đến nay là không làm việc cho tôi vì vậy xin vui lòng đặt ý kiến ​​nếu bạn có thể cung cấp một mẫu VBA cho nghiệp dư như tôi!

Nhiều đánh giá cao!

Theo lời khuyên của một trong những thạc sĩ ở đây, đây là mã tôi đã sử dụng và thay thế strFPath bằng thư mục tôi đã bao gồm tất cả các tệp pptx mà tôi muốn chèn vào tệp pptx trình bày MASTER và thay thế strSpec bằng một trong các tệp từ thư mục tôi đặt các tập tin khác để nó được chèn vào nhưng không may mắn của nó làm việc.

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 

0
2018-03-23 15:47


gốc


Tốt hơn nhiều :-) Bây giờ chúng ta chỉ cần biết nó không hoạt động như thế nào. Nó có làm gì không? bạn đang nhận được một lỗi? Nếu có, vui lòng gửi thông báo lỗi chính xác. - CharlieRB
Có chuyện gì vậy? Nó có thêm các trang trình bày vào sai mục tiêu không? Có lỗi không? v.v. - Raystafarian
Một điều có thể xảy ra: nếu tệp chứa mã hoặc tệp bạn chèn trang trình bày INTO nằm trong cùng thư mục với tệp bạn muốn chèn trang trình bày TỪ, bạn sẽ gặp sự cố. Thêm một thử nghiệm để đảm bảo rằng strFileName <> oTarget.Name trước dòng có chèn. - Steve Rindsberg


Các câu trả lời:


Tôi không thể có được một trong những bạn phải làm việc. Nó khá cũ, vì vậy có thể nó không tương thích với các phiên bản sau của PowerPoint.

Tôi đã tìm thấy VBA sau tại PPTools, Giải pháp 2, hoạt động để làm những gì bạn mô tả. Chỉ có ngoại lệ, bạn không phải thay đổi đường dẫn bởi vì cái này sử dụng thư mục chứa các tệp bạn muốn kết hợp.

Có hai Subs trong mã này phải được sử dụng cùng nhau.

  • Mở một tệp trình bày mới và lưu nó vào thư mục tất cả các tệp bạn muốn kết hợp vào (bạn có thể di chuyển nó sau)
  • Dán mã vào cửa sổ VBA
  • Chạy InsertAllSlides macro và nó sẽ kết hợp chúng.

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
2018-03-23 17:27



Xin chào Charlie cảm ơn vì sự giúp đỡ. Tôi gặp vấn đề khi chạy nó có lẽ vì tôi không làm điều gì đúng. chạy macro và không có gì được kết hợp trong file tàu mẹ :( Tôi có thể ghi lại video và chia sẻ liên kết youtube với bạn để đánh giá không? - anton86
Bạn có đang mở và lưu bản trình bày đã bật macro mới trong thư mục chứa tất cả các tệp không? Sau khi dán mã vào VBA, bạn đã gỡ lỗi trước khi chạy nó chưa? Nó có đưa ra bất kỳ thông báo lỗi nào không? Bạn có thể làm video nếu bạn muốn, nhưng tôi không biết nếu nó sẽ giúp trừ khi có cái gì đó cụ thể xảy ra. - CharlieRB
Xin chào, tôi đã quản lý để làm cho nó hoạt động mặc dù tôi cần phải yêu cầu trợ giúp về cách lưu bố cục của các trang trình bày được nhập? - anton86
Xem xét độ tuổi của bài đăng này, tôi khuyên bạn nên tạo một câu hỏi mới cụ thể cho những gì bạn cần. - CharlieRB