使用 vba 在 PowerPoint 2016 中插入幻灯片缩放
Inserting a Slide Zoom in PowerPoint 2016 using vba
PowerPoint 2016 有一个简洁的新功能,您可以在其中插入缩放 Slides/Sections。如果你不知道我在说什么,请看这里:https://support.office.com/en-us/article/Use-Zoom-for-PowerPoint-to-bring-your-presentation-to-life-9d6c58cd-2125-4d29-86b1-0097c7dc47d7
我正在尝试自动执行此过程,因为我每次演示都会使用此功能 20-30 次。为了可见性,我想自动化的工作流程如下:
- 截图application/screen
- 在 PowerPoint 中插入新的空白幻灯片
- 将屏幕截图粘贴到幻灯片中并进行调整size/position
- 隐藏新幻灯片
- 将屏幕截图幻灯片作为幻灯片缩放插入另一张幻灯片
我已经在 VBA 宏中完成了步骤 1-4,但我不知道是否有 vba 命令来插入幻灯片缩放。我担心的是,由于此功能是 2016 年的新功能,因此 VBA 中还没有。
有人知道 VBA 命令行来自动执行上述第 5 步吗?
提前致谢!
文森特
对象模型中似乎没有任何内容(至少 VBA 所见)对此有帮助。 Shapes 和 ShapeRanges 现在有一个 HasSectionZoom 属性,但是这个 returns 是错误的,即使对于使用缩放 | 插入的形状也是如此。部分缩放功能。
Alt NY2C 至少会让您快速进入“插入部分缩放”对话框。
我刚刚遇到了这个需求,HasSectionZoom 属性 仍然没有返回预期的结果,PowerPoint 2016 Insider 版本 1809 中的 OM 中也没有任何新内容,内部版本 10813.20004 可以帮助缩放内容创建的自动化。但是除了 Steve 用于打开 Insert Section Zoom 对话框的击键方法之外,您还可以使用这些方法来完成相同的操作:
Application.CommandBars.ExecuteMso "MSPPTInsertTableofContents"
Application.CommandBars.ExecuteMso "SectionZoomInsert"
Application.CommandBars.ExecuteMso "SlideZoomInsert"
我喜欢 idMSO 控件名称的美观和一致;-)
感谢 Steve Rindsberg and Jamie Garroch 的回答。
通过更多的工作,我能够将两者结合起来并得到我最初想要的结果。我认为我应该能够只使用 SendKeys
命令来完成它,但不知何故我无法弄清楚如何输入 Alt 键。无论如何,SendKeys 在测试和调试时会给我带来麻烦,因为如果焦点在那里而不是在演示文稿上,它实际上会在模块中键入键。
这是我的最终解决方案:
Sub insert_zoom()
Dim pTargetSlide As Slide, pNewSlide As Slide _
, pLayout As CustomLayout _
, pShape As Shape _
, i As Integer
With Application.ActivePresentation
Set pLayout = .Slides(1).CustomLayout
Set pTargetSlide = Application.ActiveWindow.View.Slide
Set pNewSlide = .Slides.AddSlide(.Slides.Count + 1, pLayout)
End With
With pNewSlide
.Select
.Shapes.Paste
.SlideShowTransition.Hidden = msoTrue
End With
pTargetSlide.Select
Application.CommandBars.ExecuteMso "SlideZoomInsert"
For i = 1 To pNewSlide.SlideNumber - 1
SendKeys ("{RIGHT}")
Next i
SendKeys (" ~")
End Sub
可能需要更多代码来捕获和格式化您粘贴到新幻灯片中的任何内容。现在我正在处理高分辨率图像,粘贴时默认为最大尺寸,因此我不需要任何格式或操作。
干杯!
PowerPoint 2016 有一个简洁的新功能,您可以在其中插入缩放 Slides/Sections。如果你不知道我在说什么,请看这里:https://support.office.com/en-us/article/Use-Zoom-for-PowerPoint-to-bring-your-presentation-to-life-9d6c58cd-2125-4d29-86b1-0097c7dc47d7
我正在尝试自动执行此过程,因为我每次演示都会使用此功能 20-30 次。为了可见性,我想自动化的工作流程如下:
- 截图application/screen
- 在 PowerPoint 中插入新的空白幻灯片
- 将屏幕截图粘贴到幻灯片中并进行调整size/position
- 隐藏新幻灯片
- 将屏幕截图幻灯片作为幻灯片缩放插入另一张幻灯片
我已经在 VBA 宏中完成了步骤 1-4,但我不知道是否有 vba 命令来插入幻灯片缩放。我担心的是,由于此功能是 2016 年的新功能,因此 VBA 中还没有。
有人知道 VBA 命令行来自动执行上述第 5 步吗?
提前致谢!
文森特
对象模型中似乎没有任何内容(至少 VBA 所见)对此有帮助。 Shapes 和 ShapeRanges 现在有一个 HasSectionZoom 属性,但是这个 returns 是错误的,即使对于使用缩放 | 插入的形状也是如此。部分缩放功能。
Alt NY2C 至少会让您快速进入“插入部分缩放”对话框。
我刚刚遇到了这个需求,HasSectionZoom 属性 仍然没有返回预期的结果,PowerPoint 2016 Insider 版本 1809 中的 OM 中也没有任何新内容,内部版本 10813.20004 可以帮助缩放内容创建的自动化。但是除了 Steve 用于打开 Insert Section Zoom 对话框的击键方法之外,您还可以使用这些方法来完成相同的操作:
Application.CommandBars.ExecuteMso "MSPPTInsertTableofContents"
Application.CommandBars.ExecuteMso "SectionZoomInsert"
Application.CommandBars.ExecuteMso "SlideZoomInsert"
我喜欢 idMSO 控件名称的美观和一致;-)
感谢 Steve Rindsberg and Jamie Garroch 的回答。
通过更多的工作,我能够将两者结合起来并得到我最初想要的结果。我认为我应该能够只使用 SendKeys
命令来完成它,但不知何故我无法弄清楚如何输入 Alt 键。无论如何,SendKeys 在测试和调试时会给我带来麻烦,因为如果焦点在那里而不是在演示文稿上,它实际上会在模块中键入键。
这是我的最终解决方案:
Sub insert_zoom()
Dim pTargetSlide As Slide, pNewSlide As Slide _
, pLayout As CustomLayout _
, pShape As Shape _
, i As Integer
With Application.ActivePresentation
Set pLayout = .Slides(1).CustomLayout
Set pTargetSlide = Application.ActiveWindow.View.Slide
Set pNewSlide = .Slides.AddSlide(.Slides.Count + 1, pLayout)
End With
With pNewSlide
.Select
.Shapes.Paste
.SlideShowTransition.Hidden = msoTrue
End With
pTargetSlide.Select
Application.CommandBars.ExecuteMso "SlideZoomInsert"
For i = 1 To pNewSlide.SlideNumber - 1
SendKeys ("{RIGHT}")
Next i
SendKeys (" ~")
End Sub
可能需要更多代码来捕获和格式化您粘贴到新幻灯片中的任何内容。现在我正在处理高分辨率图像,粘贴时默认为最大尺寸,因此我不需要任何格式或操作。
干杯!