将PowerPoint VBA代码翻译为Delphi,“保留源格式”问题

4
我是一名Delphi(2010)程序员,但对于PowerPoint(2010)还不太熟悉。
我找到了两个能保留源格式的幻灯片复制代码:
Sub test1()
Dim orig_slide, new_slide As Slide
Dim slide_range As SlideRange

    Set orig_slide = ActivePresentation.Slides(2)
    orig_slide.Copy
    Set slide_range = ActivePresentation.Slides.Paste(6)
    Set new_slide = slide_range.Item(1)

    new_slide.Design = orig_slide.Design
    new_slide.ColorScheme = orig_slide.ColorScheme
End Sub

Sub test2()
    ActivePresentation.Slides(2).Select
    ActiveWindow.Selection.Copy
    ActiveWindow.View.PasteSpecial (DataType = ppPasteOLEObject)
End Sub

他们在PowerPoint中都能够产生预期的结果,但在Delphi中我遇到了异常:

test1,行

new_slide.Design = orig_slide.Design

异常类 EOleSysError,错误信息为“未找到成员”

test2,行

ActiveWindow.View.PasteSpecial (DataType = ppPasteOLEObject)

异常类 EOleException,消息为“View.PasteSpecial:无效请求。指定的数据类型不可用”。

我正在使用幻灯片浏览视图,复制和粘贴都正常工作,我只想添加“保留源格式”命令。

提前感谢。


我想这样做,但是我看不到答案旁边的“勾选标记”。可能是因为我是新用户,也可能是因为我不能回答自己的问题...如果您有时间,请发布一些虚拟答案,以便我可以接受它,或者解释其他标记问题已解决的方法。谢谢。 - MRB
我看不到你的答案,你可能没有“发布你的答案” :) - TLama
2
起初我无法回复我的帖子,因为有一些限制(防止自我声望)。现在它已经启用了,我猜是因为我收到了你的评论或者时间过去了...谢谢 TLama - MRB
1个回答

1
我想我已经找到了一个解决方案:

这段 Delphi 代码(不起作用)

var OrigSlide, NewSlide : Variant;
NewSlide.Design := OrigSlide.Design;

在右侧,Delphi似乎只接受variant_variable,而不接受variant_variable.property

左侧似乎是相反的方式?!?

当我用这段代码替换它时,它可以工作

OrigSlide := OrigSlide.Design;
NewSlide.Design := OrigSlide;

但我只能猜测原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接