嵌入式 OLEO-Object 在编辑时覆盖自身

Embedded OLEO-Object overwrites itself when edited

我目前正在尝试执行以下步骤:

  1. 将 PowerPoint 模板嵌入 Excel
  2. 运行编辑PP模板的宏完成
  3. 将新编辑的PP保存为新的PP文件
  4. 如果需要可以重复步骤 1-3

为此,我将 PP 模板作为 OLEO 对象(通过插入-->对象-->选择 PPTX)嵌入名为“PP 导出”的工作表中,并 运行 以下代码:

'Dim oEmbFile As Object
'Application.DisplayAlerts = False
'Set oEmbFile = ThisWorkbook.Sheets("PP Export").OLEObjects("PPtemplate")
'oEmbFile.Verb Verb:=xlOpen
'Set oEmbFile = Nothing
'Set PPpres = PPapp.ActivePresentation
'Application.DisplayAlerts = True

这很好用,但我只能这样做一次。这是因为一旦第一个宏编辑了模板,它会自动保存这些更改,并且模板不再是模板,而是第一个宏的结果 运行(已编辑模板)...

我怎样才能阻止它覆盖自己?也许以某种方式将模板提取到用户 PC,然后打开并编辑它,因此即使在 运行 宏之后嵌入的模板也始终相同?

任何 help/tips 将不胜感激! 谢谢,保持健康

编辑 - 解决方案:

  1. 询问保存位置
  2. 保存嵌入的副本
  3. 打开副本以编辑副本而不是嵌入文件
With Application.FileDialog(msoFileDialogFolderPicker)
   .AllowMultiSelect = False
    .Show
     PPdateipfad = .SelectedItems.Item(1)
End With

Dim oEmbFile As Object
Application.DisplayAlerts = False
Set oEmbFile = ThisWorkbook.Sheets("PP Export").OLEObjects("PPvorlage")
oEmbFile.Verb Verb:=xlOpen
Set oEmbFile = Nothing
Set PPpres = PPapp.ActivePresentation
Application.DisplayAlerts = True
PPpres.SaveAs (PPdateipfad + "\QM-Check Präsentation.pptx")
PPpres.Close
Set PPpres = PPapp.Presentations.Open(PPdateipfad + "\QM-Check Präsentation.pptx")

解决方案:

  1. 询问保存位置
  2. 保存嵌入的副本
  3. 打开副本以编辑副本而不是嵌入文件
With Application.FileDialog(msoFileDialogFolderPicker)
   .AllowMultiSelect = False
    .Show
     PPdateipfad = .SelectedItems.Item(1)
End With

Dim oEmbFile As Object
Application.DisplayAlerts = False
Set oEmbFile = ThisWorkbook.Sheets("PP Export").OLEObjects("PPvorlage")
oEmbFile.Verb Verb:=xlOpen
Set oEmbFile = Nothing
Set PPpres = PPapp.ActivePresentation
Application.DisplayAlerts = True
PPpres.SaveAs (PPdateipfad + "\QM-Check Präsentation.pptx")
PPpres.Close
Set PPpres = PPapp.Presentations.Open(PPdateipfad + "\QM-Check Präsentation.pptx")