【问题标题】:Inserting a Slide Zoom in PowerPoint 2016 using vba使用 vba 在 PowerPoint 2016 中插入幻灯片缩放
【发布时间】:2017-05-08 10:26:51
【问题描述】:

PowerPoint 2016 有一个简洁的新功能,您可以在其中插入缩放幻灯片/部分。如果你不知道我在说什么,请看这里:https://support.office.com/en-us/article/Use-Zoom-for-PowerPoint-to-bring-your-presentation-to-life-9d6c58cd-2125-4d29-86b1-0097c7dc47d7

我正在尝试自动执行此过程,因为我在每次演示文稿中使用此功能 20-30 次。为了可见性,我想要自动化的工作流程如下:

  1. 截取应用程序/屏幕截图
  2. 在 PowerPoint 中插入新的空白幻灯片
  3. 在幻灯片中粘贴屏幕截图并调整大小/位置
  4. 隐藏新幻灯片
  5. 将屏幕截图幻灯片作为幻灯片缩放插入另一张幻灯片中

我已经在 VBA 宏中执行了步骤 1-4,但我不知道是否有用于插入幻灯片缩放的 vba 命令。我担心的是,由于此功能是 2016 年的新功能,所以它还没有出现在 VBA 中。

有人知道 VBA 命令行可以自动执行上述第 5 步吗?

提前致谢!

文森特

【问题讨论】:

  • 正如史蒂夫所说。缩放对象是无法使用 VBA 创建的特殊对象。不过你可以使用 OpenXml。

标签: vba powerpoint


【解决方案1】:

对象模型中似乎没有任何东西可以帮助解决这个问题(至少在 VBA 中是这样)。 Shapes 和 ShapeRanges 现在有一个 HasSectionZoom 属性,但这会返回 false,即使对于使用 Zoom | 插入的形状也是如此。部分缩放功能。

Alt NY2C 至少可以让您快速进入“插入部分缩放”对话框。

【讨论】:

    【解决方案2】:

    我刚遇到对此的需求,HasSectionZoom 属性仍未返回预期结果,PowerPoint 2016 Insider 版本 1809 中的 OM 中也没有任何新内容,构建 10813.20004 以帮助自动创建缩放内容.但除了 Steve 用于打开“插入部分缩放”对话框的击键方法之外,您还可以使用这些方法来做同样的事情:

    Application.CommandBars.ExecuteMso "MSPPTInsertTableofContents"
    Application.CommandBars.ExecuteMso "SectionZoomInsert"
    Application.CommandBars.ExecuteMso "SlideZoomInsert"
    

    我只是喜欢 idMSO 控件名称美观且一致的方式;-)

    【讨论】:

      【解决方案3】:

      感谢Steve RindsbergJamie 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
      

      可能需要更多代码来捕获和格式化您粘贴到新幻灯片中的任何内容。现在我正在处理大分辨率图像,粘贴时默认为最大尺寸,因此我不需要任何格式或操作。

      干杯!

      【讨论】:

      • 这很有趣。插入幻灯片缩放窗口是模态的,所以我很惊讶 {RIGHT} 的 SendKeys 语句,然后是 SPACE 来选择,最后是 ENTER (~) 来执行实际工作。整洁的发现文森特 :-) 仅供参考,使用 SendKeys 发送 Alt 键,您使用 % 所以 SendKeys "%H" 激活 Home 选项卡(假设 UI 启动状态是必需的 - 这是使用 SendKeys 的挑战!)。跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多