Да, вы можете, но вы не можете сделать это с Binary Appending.
Зачем...??
Потому что CSV - это файл значений, разделенных запятыми, который позволяет сохранять данные в формате таблицы. CSV выглядят как электронная таблица, но с расширением .csv. Поэтому, когда вы добавляете их, вы все равно можете использовать их в Excel. Но .pptx имеют разные форматы, которые не так просты. следовательно, двоичное добавление не будет работать.
Следующий код вставит все слайды из всех презентаций в ту же папку, что и текущая активная презентация (но не будет пытаться вставить слайды из текущей презентации в себя). (Лично проверено)
Следуйте шагам:
- Создать новую папку.
Чтобы добавить несколько файлов, сохраните текущий файл в новой папке, в которую вы хотите вставить слайды из других файлов.
Скопируйте все остальные файлы .pptx или .ppt в новую папку. Откройте документ, в который вы хотите добавить файлы.
Теперь нажмите ALT+F11, чтобы запустить редактор VBA.
Или выберите Файл | Варианты | Настройте ленту и поставьте галочку рядом с "Разработчик" в списке в разделе "Настройка ленты". Закройте диалоговое окно параметров, перейдите на вкладку Разработчик, затем щелкните Visual Basic, чтобы запустить редактор.
В редакторе VBA убедитесь, что ваша презентация выделена в левой панели.
Выберите «Вставить, модуль» в строке меню, чтобы вставить новый модуль кода в ваш проект.
Вставьте этот код и измените " *.PPT
"к" *.PPTX
"или что угодно при необходимости
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
- Чтобы убедиться в отсутствии серьезных синтаксических проблем с кодом, выберите «Отладка, Компиляция» в строке меню.
- Если произошла ошибка, проверьте код еще раз, либо нажмите кнопку "Выполнить".
- Слайды будут добавлены в открытый документ.
ПРИМЕЧАНИЕ. Фоновые изображения и некоторые другие элементы не добавляются при добавлении слайдов из другого файла.
Посмотреть и узнать больше от: