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

发布于 2025-01-02 01:51:41 字数 1021 浏览 1 评论 0原文

我正在使用 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:无效请求”。指定的数据类型不可用'

我正在使用幻灯片排序视图,复制和粘贴工作正常,我只是尝试添加“保留源格式”命令。

提前致谢

I am working with Delphi(2010), but I'm new with PowerPoint(2010)

I've found two codes for copying slides with "keep source formatting":

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

They both are giving desired results in PowerPoint but in Delphi i get exceptions :

test1, line

new_slide.Design = orig_slide.Design

exception class EOleSysError with message 'Member not found'

test2, line

ActiveWindow.View.PasteSpecial (DataType = ppPasteOLEObject)

exception class EOleException with message 'View.PasteSpecial : Invalid request. The specified data type is unavailable'

I am using Slide Sorter View, copying and pasting are working ok, I'm only trying to add "keep source formatting" command.

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怀念你的温柔 2025-01-09 01:51:41

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

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

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

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

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

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

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

但我只能猜测为什么。

I think I've found a solution :

This code in Delphi (doesn't work)

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

on the right side, Delphi seems to accept only variant_variable, it doesn't accept variant_variable.property

Left side seems to work in opposite way ?!?

When I replaced it with this code, it works

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

But I can only guess why.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文