Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Excel als PDF über Fernsteuerung speichern (https://www.delphipraxis.net/172752-excel-als-pdf-ueber-fernsteuerung-speichern.html)

VkPenguin 20. Jan 2013 21:26

Excel als PDF über Fernsteuerung speichern
 
Hallo zusammen,
ich arbeite momentan an einem Programm, das unter anderem Excel Dateien als PDF abspeichern soll. Ich habe beim suchen nach einer Lösung schon gesehen, dass es mithilfe von Druckern oder AddIns möglich ist, darauf würde ich aber gerne verzichten.

Normalerweise extrahiere ich die benötigten Befehle einfach aus in Excel erstellten Markos. Daraus ergibt sich in diesem Fall folgender Code:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\SC5\Desktop\test.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Meistens genügt es, diesen Code etwas an Delphi anzupassen, also etwa so (Ziel ist ein String, welcher den Pfad enthält):


Delphi-Quellcode:
Excel.ActiveSheet.ExportAsFixedFormat(xlTypePDF, PWideChar(Ziel), xlQualityStandard,
                                               True, False, False)
Hier stosse ich aber an das Problem, dass Delphi (Im Gegensatz zu den meisten Xl... Konstanten) weder XLTypePDF noch xlQualityStandart erkennt. Hat jemand eine Idee, wie ich die Werte der Konstanten herausfinden kann, um diese einzufügen, oder wie ich das Problem anders lösen kann ?

Vielen Dank für die Hilfe!

daywalker9 20. Jan 2013 21:31

AW: Excel als PDF über Fernsteuerung speichern
 
Es reicht eigentlich auf MSDN zu suchen.

XlFixedFormatType

VkPenguin 20. Jan 2013 22:00

AW: Excel als PDF über Fernsteuerung speichern
 
Danke erstmal für Deine Antwort :)

Ich befürchte, das ist eine ziemliche Anfängerfrage, aber was bedeutet das nun?

Das -

Delphi-Quellcode:
Excel.ActiveSheet.ExportAsFixedFormat('PDF', PWideChar(Ziel), 'Standard quality',
                                       True, False, False)
- kann doch nicht gemeint sein oder?

Bummi 20. Jan 2013 23:18

AW: Excel als PDF über Fernsteuerung speichern
 
Delphi-Quellcode:
Excel.ActiveSheet.ExportAsFixedFormat(0, PWideChar(Ziel), 0,
                                       True, False, False)
Wenn man schnell mal einen Stapel Konstanten bei Word und Excel braucht kann es hilfreich sein einfach eine Makro zu erstellen und sich den Wert in einer MsgBox anzeigen zu lassen.

Im Menü unter weitere Befehle >> Menüband anpassen >> Entwicklertools anhaken.
Code:
Sub dummy()
  MsgBox (xlTypePDF)
End Sub

VkPenguin 20. Jan 2013 23:34

AW: Excel als PDF über Fernsteuerung speichern
 
Ah, das ist ein super Tipp, danke Dir! Den werd ich sicher noch öfter brauchen können. Wenn ich es richtig gemacht habe, sind beide Werte in meinem Fall 0, ich habe es also mit

Delphi-Quellcode:
Excel.ActiveSheet.ExportAsFixedFormat(0, PWideChar(Ziel), 0, True, False, False)
versucht. Daraufhin bekomme ich aber die Fehlermeldung "Die Zahl muss zwischen 1 und *Größtmöglicher Integer* liegen" und mein Programm gibt folgenden Fehler aus:

---------------------------
Sckg
---------------------------
OLE-Fehler 800A03EC.
---------------------------
OK
---------------------------

Was habe ich denn falsch gemacht ? Da es in Excel Konstanten sind (Oder?) kann es nicht daran liegen, dass sie durch Eingaben, die ich in meinem kleinen Makro nicht berücksichtigt habe, verändert werden...

*EDIT* Oh, ich sehe gerade, Du hast mir die Konstanten ja schon rausgesucht, das hatte ich ganz übersehen, sorry ;-) Naja, jetzt hab ich's immerhin auch mal selbst gemacht :)

Bummi 21. Jan 2013 00:07

AW: Excel als PDF über Fernsteuerung speichern
 
Das letzte false in dem Aufruf macht den Ärger, wenn Du das PDF nicht anzeigen musst setze dort einfach EmptyParam ein, ansonsten siehe hier:
http://msdn.microsoft.com/en-us/libr...ffice.12).aspx


Mit benannten Parametern kann man sich auf das beschränken was einen interessiert.

Delphi-Quellcode:
xls.ActiveSheet.ExportAsFixedFormat(Type:=0, Filename:='C:\temp\test.pdf', OpenAfterPublish:= true)

VkPenguin 23. Jan 2013 10:01

AW: Excel als PDF über Fernsteuerung speichern
 
Das funktioniert, vielen lieben Dank :-) Allerdings erkennt Delphi "Type" automatisch und wirft daher einen Fehler (das Programm wird aber trotzdem gestartet). Die Rote Markierung irritiert aber trotzdem, gibt es einen Weg, das zu ändern?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz