1

我编写了一个 VBA 脚本,它通过一个 PowerPoint (PRS_data) 搜索标题匹配,然后将幻灯片复制到新的 PowerPoint (PRS)。源上的幻灯片只是标题和图像。当某些幻灯片被复制时,图像要么没有被保留,要么我得到一个带有红色 X 的框。

我使用的是 PowerPoint 2007 SP3,所以红色 X 修补程序不是问题。

我也尝试添加 DoEvents 和 Sleep,但没有成功。

如果我让目标窗口在用户屏幕上最大化,它似乎可以工作,但如果它被最小化,我会得到零星的空白幻灯片。结果不一致。此外,我可以确认幻灯片确实被复制了,因为目标是一个空的演示文稿,并且它充满了只有正确标题的幻灯片。再次不一致的结果。

以前有人遇到过这个吗??

这是代码:

For Each Sld In PRS_data.Slides
    If Sld.SlideIndex > 1 Then          
        If (Sld.Shapes.Title.TextFrame.TextRange.Text Like "*" & iDiv & " Division*") Then
            PRS_data.Slides.Range(Sld.SlideIndex).Cut
            PRS.Windows(1).Activate
            PRS.Slides.Paste
            DoEvents
        End If
    End If
Next
4

1 回答 1

1

您不能在剪切或复制后立即执行粘贴。系统上的其他程序正在对剪切做出反应,因此剪贴板尚不可用。几年前,您可能会从 PowerPoint 中收到“无法打开剪贴板”错误,但显然它只是默默地失败了。

请注意,如果这是一个最终用户应用程序,并且他们正在运行其他支持剪贴板的应用程序,或者正在使用远程桌面,那么这些用户会讨厌您的程序。提供剪贴板是为了方便用户,而不是开发人员。

也就是说,您可以通过在 CUT/COPY 命令之后立即添加 2 秒睡眠来完成这项工作。

于 2013-03-25T15:40:05.200 回答