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

时间:2012-02-04 17:02:07

标签: delphi powerpoint

我正在使用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,line

new_slide.Design = orig_slide.Design

异常类EOleSysError,消息“未找到成员”

test2,line

ActiveWindow.View.PasteSpecial (DataType = ppPasteOLEObject)

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

我正在使用幻灯片浏览器查看,复制和粘贴工作正常,我只是尝试添加“保持源格式化”命令。

提前致谢

1 个答案:

答案 0 :(得分:1)

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

Delphi中的这段代码(不起作用)

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

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

左侧似乎以相反的方式工作?!?

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

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

但我只能猜到原因。