Delphi 到 PPT - 如何复制然后移动幻灯片
Delphi to PPT- How to Copy then Move a Slide
Delphi RIO - 我正在使用Delphi来控制PPT。我需要将给定的幻灯片复制到 PPT 平台的末尾,然后对其进行更改。我通过 slide.DUPLICATE 方法复制我的幻灯片。这会在源幻灯片之后创建幻灯片的副本。我找到了 MoveTo method,但它似乎不是 Delphi 中的有效方法。我的 USES 子句中有 Office_TLB, MSPpt2000。我试图为 PPT 导入一个更新的 TYPE 库,但似乎确实有一个。 (尝试的方法:来自 Delphi/Component/Import Component/Type Library。)如何移动幻灯片(或幻灯片范围对象,因为这是 DUPLICATE 命令 returns)的末尾甲板?这是我当前的代码。这里一切正常...我只是没有移动操作...
procedure CopySlide;
var
lDeck: PowerPointPresentation;
lApplication: PowerPointApplication;
lSourceSlide : PowerPointSlide;
lDestSlideRange: SlideRange;
begin
lApplication := CoPowerPointApplication.Create;
// Open the PPT Deck
lDeck := lApplication.Presentations.Open('D:\testppt.pptx', msoFalse, msoFalse, msoTrue);
lSourceSlide := lDeck.Slides.Item(4);
// Copy the slide. Duplicate returns a SlideRange, not a slide object
lDestSlideRange := lSourceSlide.Duplicate;
// Move the slide to the end of the deck
// ?????
end;
Delphi 附带多个 MS Office 类型库(位于 Delphi 安装目录的 OCX\Servers
中)以支持 legacy MS Office versions。 PowerPoint 的类型库是:
MSPpt2000.pas
- Office 2000 (9.0)
PowerPointXP.pas
- Office XP (10.0)
PowerPoint2010.pas
- Office 2010 (14.0)
您选择了不支持该方法的最旧的。
选项 1
选择较新的版本 - 至少是 Office XP (10.0)。这也意味着放弃对 Office 2000 的支持。然后您将能够使用 MoveTo
方法:
lDestSlideRange.MoveTo(lDeck.Slides.Count);
选项 2
lDestSlideRange.Cut;
lDeck.Slides.Paste(lDeck.Slides.Count + 1);
方法 Slides.Paste
获取粘贴剪贴板内容的幻灯片索引(从 1 开始)。为方便起见,您可以使用-1
作为索引,将内容粘贴在末尾。
lDestSlideRange.Cut;
lDeck.Slides.Paste(-1);
Delphi RIO - 我正在使用Delphi来控制PPT。我需要将给定的幻灯片复制到 PPT 平台的末尾,然后对其进行更改。我通过 slide.DUPLICATE 方法复制我的幻灯片。这会在源幻灯片之后创建幻灯片的副本。我找到了 MoveTo method,但它似乎不是 Delphi 中的有效方法。我的 USES 子句中有 Office_TLB, MSPpt2000。我试图为 PPT 导入一个更新的 TYPE 库,但似乎确实有一个。 (尝试的方法:来自 Delphi/Component/Import Component/Type Library。)如何移动幻灯片(或幻灯片范围对象,因为这是 DUPLICATE 命令 returns)的末尾甲板?这是我当前的代码。这里一切正常...我只是没有移动操作...
procedure CopySlide;
var
lDeck: PowerPointPresentation;
lApplication: PowerPointApplication;
lSourceSlide : PowerPointSlide;
lDestSlideRange: SlideRange;
begin
lApplication := CoPowerPointApplication.Create;
// Open the PPT Deck
lDeck := lApplication.Presentations.Open('D:\testppt.pptx', msoFalse, msoFalse, msoTrue);
lSourceSlide := lDeck.Slides.Item(4);
// Copy the slide. Duplicate returns a SlideRange, not a slide object
lDestSlideRange := lSourceSlide.Duplicate;
// Move the slide to the end of the deck
// ?????
end;
Delphi 附带多个 MS Office 类型库(位于 Delphi 安装目录的 OCX\Servers
中)以支持 legacy MS Office versions。 PowerPoint 的类型库是:
MSPpt2000.pas
- Office 2000 (9.0)PowerPointXP.pas
- Office XP (10.0)PowerPoint2010.pas
- Office 2010 (14.0)
您选择了不支持该方法的最旧的。
选项 1
选择较新的版本 - 至少是 Office XP (10.0)。这也意味着放弃对 Office 2000 的支持。然后您将能够使用 MoveTo
方法:
lDestSlideRange.MoveTo(lDeck.Slides.Count);
选项 2
lDestSlideRange.Cut;
lDeck.Slides.Paste(lDeck.Slides.Count + 1);
方法 Slides.Paste
获取粘贴剪贴板内容的幻灯片索引(从 1 开始)。为方便起见,您可以使用-1
作为索引,将内容粘贴在末尾。
lDestSlideRange.Cut;
lDeck.Slides.Paste(-1);