Autor Beitrag
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 376
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Di 08.07.14 21:29 
Hallo,

so ganz passt die Frage nicht in dieses Forum, ich versuche es.

Ich habe ein Programm (von mir in Delphi 7), dass eine Grafik als CGM (das ist ein Vektorformat) erzeugt. Mit Klick auf einen Button wird der Name der angelgten Graphik-Datei an Powerpoint geschickt und dort in ein leeres Blatt eingefügt, so dass ich sie mit allen Möglichkeiten bearbeiten kann, also auch z. B. mit "Gruppe auflösen" in ihre einzelen Bestandteile zerlegen kann.

Powerpoint 2013 kann CGM wegen möglicher Sicherheitslücken nur noch mit speziellen Settings in der Registry importieren. Deshalb erzeuge ich jetzt EMF Dateien (die auch viel strukturierter sind als CGM).

Das Einfügen per Befehl von Powerpoint aus geht bestens, aber es geht nicht über OLE. Da sind die Befehle ja praktisch Visual Basic, da kenne ich mich nicht mit aus. Bisher habe ich einfach bei den Microsoft-Programmen die Funktion "Makro aufzeichen" genutzt, meine Befehle per Hand gemacht, dann hatte ich die ganzen VB-Befehle, die ich brauchte. Leider gibt es bei Powerpoint 2013 diese Funktion nicht mehr, nun bin ich hilflos.

Vielleicht hat ja jemand einen Tipp, warum der folgende seit etwa Powerpoint 2000 (für CGM) bewährte Delphi-Code jetzt bei Powerpoint 2013 für EMF zu der Fehlermeldung von Powerpoint "Fehler beim Importieren der Datei" kommt. Über das Menü von Powerpoint "Einfügen/Bilder" geht es einwandfrei.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
BEGIN
  ppt := CreateOleObject('POWERPOINT.Application');
  ppt.visible := true;
  ppt.Presentations.Add(true);
  ppt.ActiveWindow.View.GotoSlide(ppt.ActivePresentation.Slides.Add(1, ppLayoutBlank).SlideIndex);

  slidebreite := ppt.ActivePresentation.pageSetup.Slidewidth - 3;
  slidehoehe := ppt.ActivePresentation.pageSetup.Slideheight - 3;

  ppt.ActiveWindow.Selection.SlideRange.Shapes.AddPicture(Filename.Text, false, true, 11, slidebreite, slidehoehe).select;
  ppt.ActivePresentation.SlideShowSettings.Run;
  ppt := unassigned;
END;


Grüße GuaAck
GuaAck Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 376
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Sa 12.07.14 19:03 
Nachtrag:

Es könnte daran liegen, dass Powerpoint immer mit dem Angebot aller möglichen Vorlage startet, der Befehl "presentatios.add" wird deshlab wohl nicht funktionieren.

Vielleich hat ja doch jemand eine Idee.

Viele Grüße
GaaAck
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 13.07.14 10:45 
Als Makro funktioniert das problemlos:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Sub Test()
  Presentations.Add (True)
  ActiveWindow.View.GotoSlide (ActivePresentation.Slides.Add(1, ppLayoutBlank).SlideIndex)
  

  ActiveWindow.Selection.SlideRange.Shapes.AddPicture("J:\Downloads\emf.emf", False, True, 1, 1, ActivePresentation.PageSetup.SlideWidth - 3, ActivePresentation.PageSetup.SlideHeight - 3).Select
  ActivePresentation.SlideShowSettings.Run
End Sub

Für diesen Beitrag haben gedankt: GuaAck, Hochhaus
GuaAck Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 376
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Fr 18.07.14 19:47 
Gefunden!

Bei Powerpoint 2013 (oder Windows 8.1) muss darf die einzubindende Datei anscheinend nicht von einem anderen Programm geöffnet sein. 2003 (oder XP) waren da toleranter.

Danke für die Tipps,

Gruß
Guaack