Delphi RIO-我正在使用Delphi来控制PPT。我需要将给定的幻灯片复制到PPT卡座的END,然后对其进行更改。我通过slide.DUPLICATE方法复制幻灯片。这将在源幻灯片之后创建幻灯片的副本。我已经找到了MoveTo method,但是在Delphi中它似乎不是有效的方法。我的USES子句中有Office_TLB,MSPpt2000。我试图为PPT导入一个较新的TYPE库,但确实有一个。 (尝试的方法:来自Delphi /组件/导入组件/类型库。)如何将幻灯片(或幻灯片范围对象,因为这是DUPLICATE命令返回的内容)移动到平台的末尾?这是我当前的代码。这里的所有内容都可以使用...我只是没有Move操作...
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;
答案 0 :(得分:1)
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)您选择了最不支持该方法的最旧的计算机。
选择较新的版本-至少为Office XP(10.0)。这也意味着放弃对Office 2000的支持。然后,您将可以使用MoveTo
方法:
lDestSlideRange.MoveTo(lDeck.Slides.Count);
lDestSlideRange.Cut;
lDeck.Slides.Paste(lDeck.Slides.Count + 1);
方法Slides.Paste
获取幻灯片的索引(从1开始),在该索引之前粘贴剪贴板内容。为了方便起见,您可以使用-1
作为索引将内容粘贴到末尾。
lDestSlideRange.Cut;
lDeck.Slides.Paste(-1);