【问题标题】:How should I copy and paste a powerpoint slide KEEPING SOURCE FORMATTING with VBScript?我应该如何复制和粘贴 VBScript 保持源格式的PowerPoint幻灯片?
【发布时间】:2021-05-07 06:59:42
【问题描述】:

我正在尝试编写一个子例程,它将所有(以及稍后仅部分)幻灯片从 powerpoint 文件复制并粘贴到另一个保持源格式

这是我得到的最接近的:

Dim objPowerpointApp, objPresentations
Set objPowerpointApp = CreateObject("Powerpoint.Application")
Set objPresentations = objPowerpointApp.Presentations

Dim objNewPresentation
Set objNewPresentation = objPresentations.Open(strTemplateFile, 0, 0, -1)

Dim objOldPresentation : Set objOldPresentation = objPresentations.Open(tempSlideSet.Path, 0, 0, 0)

Dim tempCurrentSlide
For Each tempCurrentSlide in objOldPresentation.Slides
    tempCurrentSlide.Copy
    objNewPresentation.Application.CommandBars.ExecuteMso("PasteSourceFormatting")
Next

它不会抛出任何错误,甚至会粘贴正确的幻灯片母版,但实际上并没有粘贴任何幻灯片。

我也试过这个:

Dim objPowerpointApp, objPresentations
Set objPowerpointApp = CreateObject("Powerpoint.Application")
Set objPresentations = objPowerpointApp.Presentations

Dim objNewPresentation
Set objNewPresentation = objPresentations.Open(strTemplateFile, 0, 0, -1)

Dim objOldPresentation : Set objOldPresentation = objPresentations.Open(tempSlideSet.Path, 0, 0, 0)

Dim tempCurrentSlide
For Each tempCurrentSlide in objOldPresentation.Slides
    tempCurrentSlide.Copy
    objNewPresentation.Slides.Paste
    objNewPresentation.Application.CommandBars.ExecuteMso("PasteSourceFormatting")
Next

其中粘贴了正确的幻灯片母版以及幻灯片,但幻灯片粘贴了目标格式。

当然,这会正确粘贴所有幻灯片,但没有任何源格式:

Dim objPowerpointApp, objPresentations
Set objPowerpointApp = CreateObject("Powerpoint.Application")
Set objPresentations = objPowerpointApp.Presentations

Dim objNewPresentation
Set objNewPresentation = objPresentations.Open(strTemplateFile, 0, 0, -1)

Dim objOldPresentation : Set objOldPresentation = objPresentations.Open(tempSlideSet.Path, 0, 0, 0)

Dim tempCurrentSlide, lngSlideIndex
For Each tempCurrentSlide in objOldPresentation.Slides
    lngSlideIndex = objNewPresentation.Slides.Count
    objNewPresentation.Slides.InsertFromFile tempSlideSet.Path, lngSlideIndex
Next

根据我在文档中找到的信息和其他人的经验,第一个选项应该可以按我的需要工作,所以我真的被困在这一点上。

如何使用 VBScript 复制和粘贴 PowerPoint 幻灯片并保持其源格式??

【问题讨论】:

    标签: vbscript powerpoint paste


    【解决方案1】:

    对于任何在同一问题上苦苦挣扎的人,这是我设法创建的子例程。 objDestPresentation 应该是 Presentation ObjectsourceSlideRange 应该是 SlideRange Object

    这会将幻灯片从sourceSlideRange 复制到objDestPresentation 的末尾。希望这可以为某人节省一些我所经历的挣扎!

    Private Sub InsertSlide_Source(ByRef objDestPresentation, byVal sourceSlideRange)
        sourceSlideRange.Copy
    
        If Not objDestPresentation.Slides.Count = 0 Then
            objDestPresentation.Windows(1).View.GotoSlide(objDestPresentation.Slides.Count)
        End If
    
        objDestPresentation.Application.CommandBars.ExecuteMso("PasteSourceFormatting")
    End Sub
    

    【讨论】:

      【解决方案2】:

      这帮助我解决了长期以来对 PowerPoint 的不满。非常感谢你发布这个。我发现一个细微差别对于在粘贴之前激活我想要影响的演示文稿很重要,否则幻灯片可能会出现在错误的位置。就我而言,我在三个不同的演示文稿之间进行处理:

      1. 我从一个空壳演示开始,然后填充它
      2. 我有一个用于大多数幻灯片的“空白幻灯片”模板。
      3. 有时我还需要包含其他一次性幻灯片。

      关于激活正确的演示文稿,我使用了这里的答案:

      http://answers.microsoft.com/en-us/msoffice/forum/msoffice_powerpoint-msoffice_custom/powerpoint-vba-making-right-window-active/32c9fa95-fa1d-46f8-912a-09771a63a27a 代码

      【讨论】:

        【解决方案3】:

        在使用“PasteSourceFormatting”选项粘贴之前,您首先需要激活目标幻灯片的窗口

        当 TargetPPT 是 VBA 中的目标演示文稿时,如果我想复制 SourcePPT 的所有幻灯片:

            SourcePPT.Slides.Range.Copy
            TargetPPT.Windows(1).Activate
            TargetPPT.Application.CommandBars.ExecuteMso ("PasteSourceFormatting")
        

        幻灯片粘贴在当前活动幻灯片上 利用 Application.ActiveWindow.View.GotoSlide (5) 定位 f.i.首先在幻灯片 5 上,然后在幻灯片 5 之后粘贴新幻灯片。

        【讨论】:

          猜你喜欢
          • 2021-12-17
          • 1970-01-01
          • 1970-01-01
          • 2014-08-29
          • 1970-01-01
          • 2014-10-15
          • 2020-07-09
          • 2017-09-17
          • 1970-01-01
          相关资源
          最近更新 更多