Wiki-KopieMirror

Dies ist ein Mirror des Wikis von pascal.chat. Bearbeiten, Verlauf und Anmeldung finden dort statt.

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==

pascal
var
  varPptApp: OleVariant;  // reserviert den Speicher für die Powerpointadresse

==OleObjekt erstellen==

pascal
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==

pascal
begin
  ...
  varPptApp.Quit;
  varPptApp := Unassigned;
  ...
end;

==Powerpoint Version ermitteln==

pascal
begin
  ...
  ShowMessage(varPptApp.Version);
  ...
end;

==Sichtbarkeit steuern== Wenn Powerpoint während der automatisierten Erstellung einer Präsentation unsichtbar ist, dann flackert der Bildschirm nicht.\

pascal
begin
  ...
  varPptApp.Visible := False;  //macht Powerpoint unsichtbar
  varPptApp.Visible := True;   //macht Powerpoint sichtbar
  ...
end;

=Powerpoint Präsentation=
==Speicher für die Präsentation reservieren==

pascal
  varPptSlide: OleVariant;  // reserviert den Speicher für die Präsentation
  strName: String;

==neue Datei erstellen==

pascal
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.\

pascal
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==

pascal
begin
  ...
  varPptApp.ActivePresentation.Save; // speichert die aktive Präsentation
  // Alternative
  varPptSlide.Save; // speichert die aktive Präsentation
  ...
end;

==Präsentation steuern==

pascal
var
  strName: String;        // reserviert den Speicher für die den Namen der aktuellen Folie

===Präsentation starten===

pascal
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===

pascal
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===

pascal
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 ...===

pascal
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===

pascal
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===

pascal
begin
  ...
  strName:= varPptApp.ActivePresentation.SlideShowWindow.View.Slide.Name;
  // Alternative
  strName:= varPptSlide.SlideShowWindow.View.Slide.Name;
  ...
end;

Folien

Speicher reservieren

pascal
var
  intZaehl: Integer;        // reserviert den Speicher für die Anzahl der Folien

==Folien zählen==

pascal
begin
  ...
  intZaehl := varPptApp.ActivePresentation.Slides.Count;  //Zählt die Folien
  // Alternative
  intZaehl := varPptSlide.Slides.Count; //Zählt die Folien
  ...
end;

=Auszug aus den Powerpointkonstanten=

pascal
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.

Version 2, zuletzt geändert von WikiArchive .