从文件插入 - PowerPoint 格式

从文件插入 - PowerPoint 格式

早上好,感谢您提供的帮助。

我已经运行下面的宏一段时间了,它在合并演示文稿方面效果很好。但是,它总是将所有幻灯片转换为主演示文稿的主题和设计,我想保留原始幻灯片的格式。

是否有代码可以保留原始格式?

再次感谢。


Sub InsertAllSlides() ' 将与此幻灯片位于同一文件夹中的所有演示文稿的所有幻灯片插入此文件夹中;但不要尝试将此文件插入其自身中。

Dim vArray() As String
Dim x As Long

' Change "*.PPT" to "*.PPTX" or whatever if necessary:
EnumerateFiles ActivePresentation.Path & "\", "*.PPTX", 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

子目录结束

Sub EnumerateFiles(ByVal sDirectory As String, _ ByVal sFileSpec As String, _ ByRef vArray As Variant) ' 将符合文件规范的所有文件收集到 vArray(一个字符串数组)中

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

子目录结束

答案1

InsertFromFile 对格式没有提供太多的控制(实际上没有)。

相反,请尝试本页底部提供的方法: https://software-solutions-online.com/copy-slides-one-presentation-another-vba-powerpoint/

简而言之:

Sub Example2()
Dim objPresentation As Presentation
Dim i As Integer

'open the target presentation
Set objPresentation = Presentations.Open("C:\2.pptx")
For i = 1 To objPresentation.Slides.Count
    objPresentation.Slides.Item(i).Copy
    Presentations.Item(1).Slides.Paste
    Presentations.Item(1).Slides.Item(Presentations.Item(1).Slides.Count).Design = _
        objPresentation.Slides.Item(i).Design
Next i
objPresentation.Close
End Sub

为了避免屏幕闪烁并加快速度,您可以使用以下命令代替上述方法无窗口打开演示文稿:

Set objPresentation = Presentations.Open("C:\2.pptx"),,False

相关内容