Сохранить PPTM как PPTX без элементов CustomUI или макросов VBA

У меня есть документ PowerPoint с поддержкой макросов (PPTM), в который я хотел бы добавить функцию "Экспорт" в документ без поддержки макросов (PPTX). Я написал следующий код VBA для достижения этой цели:

'Default selected file type PPTX
Dim selected As String: selected = Application.FileDialog(msoFileDialogSaveAs).Show()
Dim filePath As String

If selected <> 0 Then
    filePath = Application.FileDialog(msoFileDialogSaveAs).SelectedItems(1)
    ActivePresentation.SaveCopyAs fileName:=filePath, FileFormat:=ppSaveAsOpenXMLPresentation
End If

Это работает правильно и сохраняет документ без какого-либо связанного кода VBA, однако я включил в свой исходный файл PPTM меню customUI, которое я также хотел бы удалить, так как вкладка ленты ссылается на различные функции VBA, которые у меня есть. удален.

Как я могу сохранить в PPTX без включенного меню CustomUI? Есть ли способ "удалить" меню CustomUI с помощью VBA(на самом деле не похоже на это, по крайней мере, в Excel Hide / Show), или его можно скрыть без выполнения вызовов метода VBA с помощью события загрузки CustomUI (такого как этот Пример)?

1 ответ

Решение

Теоретически должна быть возможность сохранить pptm в виде файла pptx (удаляя код VBA), закрыть его, переименовать в.zip, удалить папку customUI (которая содержит customUI.xml) из zip, а затем переименовать ее обратно. PPTX

Я попробовал это вручную, и это сработало.

У Рона де Брюина есть несколько примеров почтовых индексов VBA: http://www.rondebruin.nl/win/s7/win001.htm

У меня тоже возникли трудности с этим вопросом. Я нашел решение

Dim winShell As Object
    Set CurW = ActiveWindow
    Set TempW = ActivePresentation.NewWindow
    ActivePresentation.SaveCopyAs ("222.pptx")
        TempW.Close
    Set winShell = CreateObject("WScript.Shell")
    Debug.Print (("C:\" & Chr(34) & "Program Files" & Chr(34) & "\7-Zip\7z.exe d -y C:\Users\IT\Documents\222.pptx " & Chr(34) & "customUI" & Chr(34)))
    Call winShell.run("cmd /k C:\" & Chr(34) & "Program Files" & Chr(34) & "\7-Zip\7z.exe d -y C:\Users\IT\Documents\222.pptx " & Chr(34) & "customUI" & Chr(34) & " && exit")`

Есть вызов cmd 7-zip для удаления папки customUI из целевого файла, и в случае успеха - выход из cmd

Другие вопросы по тегам