早上好,感谢您提供的帮助。
我已经运行下面的宏一段时间了,它在合并演示文稿方面效果很好。但是,它总是将所有幻灯片转换为主演示文稿的主题和设计,我想保留原始幻灯片的格式。
是否有代码可以保留原始格式?
再次感谢。
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