PowerpointAutomation/de
Zurück zur Office Automation.\
=Powerpoint als OleObjekt= Für die Oleautomation muss die Unit ComObj eingebunden werden.
Grundsätzlich sollte für das Arbeiten mit Powerpoint die Unit lclproc eingebunden werden.
Die Unit lclproc stellt die nötigen Routinen für das Umwandeln der Stringtypen (Stringcasting) bereit.\
==Speicherplatz reservieren==
var
varPptApp: OleVariant; // reserviert den Speicher für die Powerpointadresse==OleObjekt erstellen==
begin
...
try
varPptApp := CreateOleObject('Powerpoint.Application'); // erstellt das Powerpointobjekt
except
WriteLn('MS Powerpoint kann nicht gestartet werden.'); // Fehlerbehandlung
end;
...
end;==OleObjekt beenden und den Speicher freigeben==
begin
...
varPptApp.Quit;
varPptApp := Unassigned;
...
end;==Powerpoint Version ermitteln==
begin
...
ShowMessage(varPptApp.Version);
...
end;==Sichtbarkeit steuern== Wenn Powerpoint während der automatisierten Erstellung einer Präsentation unsichtbar ist, dann flackert der Bildschirm nicht.\
begin
...
varPptApp.Visible := False; //macht Powerpoint unsichtbar
varPptApp.Visible := True; //macht Powerpoint sichtbar
...
end;=Powerpoint Präsentation=
==Speicher für die Präsentation reservieren==
varPptSlide: OleVariant; // reserviert den Speicher für die Präsentation
strName: String;==neue Datei erstellen==
begin
...
varPptApp.Presentations.Add(True); // Fügt eine neue Präsentation ein
...
end;==vorhandene Datei öffnen== Um in Powerpoint eine vorhandene Präsentation zu öffnen, müssen sie den String in das UTF16-format umwandeln (casten),
da die Powerpointschnittstelle nur UTF16 versteht.\
begin
...
varPptApp.Presentations.Open(UTF8ToUTF16('D:\Arbeit\Test\TestDateien\Test.ppt')) // Benötigt die Unit lclproc
// Alternative
// Einer Variablen vom Typ OleVariant wird die Adresse der Prässentation übergeben
varPptSlide := varPptApp.Presentations.Open(UTF8ToUTF16('D:\Arbeit\Test\TestDateien\Test.ppt'));
...
end;==Präsentation speichern==
begin
...
varPptApp.ActivePresentation.Save; // speichert die aktive Präsentation
// Alternative
varPptSlide.Save; // speichert die aktive Präsentation
...
end;==Präsentation steuern==
var
strName: String; // reserviert den Speicher für die den Namen der aktuellen Folie===Präsentation starten===
begin
...
varPptApp.ActivePresentation.SlideShowSettings.Run; // führt die aktive Präsentation aus
// Alternative
varPptSlide.SlideShowSettings.Run; // führt die aktive Präsentation aus
...
end;===Nächste Folie===
begin
...
varPptApp.ActivePresentation.SlideShowWindow.View.Next; // führt die nächste Folie aus
// Alternative
varPptSlide.SlideShowWindow.View.Next; // führt die nächste Folie aus
...
end;===vorhergehende Folie===
begin
...
varPptApp.ActivePresentation.SlideShowWindow.View.Previous; // führt die vorhergehende Folie aus
// Alternative
varPptSlide.SlideShowWindow.View.Previous; // führt die vorhergehende Folie aus
...
end;===geht zu Folie Nummer ...===
begin
...
varPptApp.ActivePresentation.SlideShowWindow.View.GoToSlide(2); // führt die Folie Nummer 2 aus
// Alternative
varPptSlide.SlideShowWindow.View.GoToSlide(2); // führt die Folie Nummer 2 aus
...
end;===geht zur letzten Folie===
begin
...
varPptApp.ActivePresentation.SlideShowWindow.View.Last; // führt die letzte Folie aus
// Alternative
varPptSlide.SlideShowWindow.View.Last; // führt die letzte Folie aus
...
end;===Name der aktuellen Folie ermitteln===
begin
...
strName:= varPptApp.ActivePresentation.SlideShowWindow.View.Slide.Name;
// Alternative
strName:= varPptSlide.SlideShowWindow.View.Slide.Name;
...
end;Folien
Speicher reservieren
var
intZaehl: Integer; // reserviert den Speicher für die Anzahl der Folien==Folien zählen==
begin
...
intZaehl := varPptApp.ActivePresentation.Slides.Count; //Zählt die Folien
// Alternative
intZaehl := varPptSlide.Slides.Count; //Zählt die Folien
...
end;=Auszug aus den Powerpointkonstanten=
unit uPPTConst;
interface
const
ppSaveAsPresentation = $00000001;
ppSaveAsPowerPoint7 = $00000002;
ppSaveAsPowerPoint4 = $00000003;
ppSaveAsPowerPoint3 = $00000004;
ppSaveAsTemplate = $00000005;
ppSaveAsRTF = $00000006;
ppSaveAsShow = $00000007;
ppSaveAsAddIn = $00000008;
ppSaveAsWizard = $00000009;
ppSaveAsPowerPoint4FarEast = $0000000A;
ppSaveAsDefault = $0000000B;
//Bibliothek PpSlideLayout
ppLayoutBlank = 12;
ppLayoutChart = 8;
ppLayoutChartAndText = 6;
ppLayoutClipartAndText = 10;
ppLayoutClipArtAndVerticalText = 26;
ppLayoutFourObjects = 24;
ppLayoutLargeObject = 15;
ppLayoutMediaClipAndText = 18;
ppLayoutMixed = -2;
ppLayoutObject = 16;
ppLayoutObjectAndText = 14;
ppLayoutObjectAndTwoObjects = 30;
ppLayoutObjectOverText = 19;
ppLayoutOrgchart = 7;
ppLayoutTable = 4;
ppLayoutText = 2;
ppLayoutTextAndChart = 5;
ppLayoutTextAndClipart = 9;
ppLayoutTextAndMediaClip = 17;
ppLayoutTextAndObject = 13;
ppLayoutTextAndTwoObjects = 21;
ppLayoutTextOverObject = 20;
ppLayoutTitle = 1;
ppLayoutTitleOnly = 11;
ppLayoutTwoColumnText = 3;
ppLayoutTwoObjects = 29;
ppLayoutTwoObjectsAndObject = 31;
ppLayoutTwoObjectsAndText = 22;
ppLayoutTwoObjectsOverText = 23;
ppLayoutVerticalText = 25;
ppLayoutVerticalTitleAndText = 27;
ppLayoutVerticalTitleAndTextOverChart = 28;
// Bibliothek MsoTriState
msoCTrue = 1;
msoFalse = 0;
msoTriStateMixed = -2;
msoTriStateToggle = -3;
msoTrue = -1;
implementation
end.From the Free Pascal wiki, page "PowerpointAutomation/de", as it stood on 2020-02-23 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.