嵌入式 OLEO-Object 在编辑时覆盖自身
Embedded OLEO-Object overwrites itself when edited
我目前正在尝试执行以下步骤:
- 将 PowerPoint 模板嵌入 Excel
- 运行编辑PP模板的宏完成
- 将新编辑的PP保存为新的PP文件
- 如果需要可以重复步骤 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 将不胜感激!
谢谢,保持健康
编辑 - 解决方案:
- 询问保存位置
- 保存嵌入的副本
- 打开副本以编辑副本而不是嵌入文件
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")
解决方案:
- 询问保存位置
- 保存嵌入的副本
- 打开副本以编辑副本而不是嵌入文件
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")
我目前正在尝试执行以下步骤:
- 将 PowerPoint 模板嵌入 Excel
- 运行编辑PP模板的宏完成
- 将新编辑的PP保存为新的PP文件
- 如果需要可以重复步骤 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 将不胜感激! 谢谢,保持健康
编辑 - 解决方案:
- 询问保存位置
- 保存嵌入的副本
- 打开副本以编辑副本而不是嵌入文件
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")
解决方案:
- 询问保存位置
- 保存嵌入的副本
- 打开副本以编辑副本而不是嵌入文件
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")