Сохранить 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