hatl
Goto Top

Mittels Batch aus xls pdf erzeugen

Hallo!

Wie kann ich mittels Batch aus einer *.xls einen pdf Datei machen.
Mir ist klar das ich zuerst ein ps oder prn file erzeugen muss, diese kann dann leicht per Ghostscript Tools mittels batch in ein pdf umgewnadelt werden.
Hab mir jetzt einen PostScript Druckertreiber von Adobe runtergeladen und installiert, aber wie kann ich jetzt diesen Drucker per Batch ansprechen bzw. wie sag ich dem jetzt das er aus einem bestimmten Excel ein pdf mit bestimmten Namen machen soll.
Wie muss der PsotScript Drucker installiert oder eingerichtet sein. Bzw. gibts es PostScript Druckertreiber die sich für so einen Aufgabe besser eignen als andere?

Vielen Dank für jeden Tip!!!

lg

Content-Key: 33378

Url: https://administrator.de/contentid/33378

Printed on: April 20, 2024 at 05:04 o'clock

Member: filippg
filippg May 31, 2006 at 15:25:06 (UTC)
Goto Top
Hallo,

du wirst vermutlich keinen Druckertreiber finden, der xls verarbeiten kann. D.h. du musst ein Programm finden, das xls ausdrucken kann, und dies per Kommandozeile, ansonsten wird das nicht per Batch-Datei gehen. Erste Anlaufstelle wäre Excel selber. Es wäre möglich, dass es hier sogar einen Schalter für den Start gibt, mit dem man eine Datei ausdrucken kann. Ansonsten: Es gibt im OpenSource-Bereich ein paar Projekte, die xls erzeugen können, vielleicht findest du noch eins, das öffnen und drucken kann? Was sich machen liesse wäre ein kleines Programm, das über COM auf Excel zugreift und dieses zum Drucken anweisst. Dazu müsste man aber schon ein wenig programmieren können.

Filipp
Member: Hatl
Hatl May 31, 2006 at 16:39:10 (UTC)
Goto Top
Hallo

Erstmal Danke für die schnelle Antwort!

du wirst vermutlich keinen Druckertreiber
finden, der xls verarbeiten kann. D.h. du
musst ein Programm finden, das xls
ausdrucken kann, und dies per Kommandozeile,
ansonsten wird das nicht per Batch-Datei
gehen.

Das versteh ich nicht, wenn ich die Excldatei öffne und auf drucken gehe, den PostScript drucker auswähle und drucke wird ja auch problemlos das ps file erzeugt,also kann der treiber die Daten ja verarbeiten. (verwende den Adobe Treiber)
Warum kann ich den PostScript Drucker nicht per Batch dazu bringen die Datei auszudrucken?

Ansich druck ich per Batch einen Datei doch so aus:

print Gerät Datei

Wobei für das Gerät der Anschluss angegeben wird, oder irre ich mich?
Unter Windows ist es doch auch irgendwie möglich (nur wie weiß ich nicht mehr) einen neuen Anschluss zu definieren. Wenn ich dann bei der Installation des PSDruckers diesen Anschluss angeben, sollte ich doch mit print ausdrucken können?

Grundsätzlich geht es darum: In einer Exceldatei gibt es ein Makro diese holt per Parameter die beim Aufruf diese Excel übergeben werden (diese Excel wird auch per Batch geöffnet) Daten aus einer DB. Diese Exceldatei muss ich auf einen bestimmten Rechner ausführe, dies mach ich mittels psexec, da ich keine Userkennung mitübergeben kann, wird das dann als System ausgeführt., dadurch hab ich aber auf dem Rechner keinen Möglichkeit zu drucken, sonst könnt eich gleich per Makro die erzeugten Tabellen in ein PDF drucken, wäre ja ganz einfach. Also kan ich die erzeugen Tabellen nur als neue Exceldatei speichern, dies sollen dann per Batch in ein PDF umgewandelt werden.

Vielleicht hat ja noch jemad einen Tip, danke!!

mfg
Member: filippg
filippg May 31, 2006 at 17:23:34 (UTC)
Goto Top
Das versteh ich nicht, wenn ich die
Excldatei öffne und auf drucken gehe,
den PostScript drucker auswähle und
drucke wird ja auch problemlos das ps file
erzeugt,also kann der treiber die Daten ja
verarbeiten.
Die xls-Datei enthält die Daten ja in irgendeinem, für den Drucker vollkommen unverständlichen Format. Excel kann diese Daten lesen, und dann daraus die Seite rendern, sprich festlegen, wie das ganze aussehen soll. Das Ergebnis dieses Renderns gibt Excel dann in einem Zwischenformat an den Druckertreiber weiter, und nur dieses Zwischenformat versteht der Treiber.

Ansich druck ich per Batch einen Datei doch
so aus:

print Gerät Datei

Auch hier werden die Daten durch den print-Befehl erst noch gerendert. Aber der kann auch kein xls.

Vermutlich wäre es deutlich einfacher, die Daten aus dem Makro heraus zu drucken.

Filipp
Member: Hatl
Hatl May 31, 2006 at 18:49:58 (UTC)
Goto Top
Ok, ich verstehe, hmm dann hab ich ein Problem.
Also kann man sagen dass es grundsätzlich nicht möglich ist per Batch aus einem xls ein pdf zu machen.

Aus dem Makro heraus drucken, wäre auf jeden Fall einfacher, aber leider hab ich eben als System User keinen Möglichkeit zu drucken. Wäre im Makro einen Zeile, und ich hätte das pdf mit richtigen Namen am richtigen Ort.

Ich hätte jetzt versucht einen neunen lokalen User auf den betreffenden Rechner anzulegen. Dies ist ja ein richtiger User der auch drucken kann.
Wenn ich jetzt mit ps exec dessen Kennung übergebe und das Excel am betreffenden Rechner starte, funktioniert das nur wenn der User auch gerade an diesem Rechner angemeldet ist, hmm ist eigenartig.
Handelt es sich hierbei um einen Fehler von mir, oder ist das die normale Funktion von psexec?

Vielleicht bin ich ja völlig am Holzweg, hat jemand einen andere Idee, wie ich es schaffe ein Excel auf einen bestimmten Rechner interaktiv auszuführen (bzw. das ein Excel mit Makro auf einen bestimmten Rechner ausgeführt wird, eine user Eingabe ist nicht nötig) und die einzelnen Tabellen jeweils in ein pdf drucke?

Danke!

mfg
Member: filippg
filippg May 31, 2006 at 19:39:39 (UTC)
Goto Top
Also kann man sagen dass es
grundsätzlich nicht möglich ist
per Batch aus einem xls ein pdf zu machen.
Nein. Du kannst aus einer Batch jedes beliebige Programm starten, und vielleicht findest du eins, das nichts weiter tut, als eine xls-Datei auszudrucken (ich glaube das allerdings nicht, und Excel besitzt keinen entsprechenden Kommandozeilenparameter [habe nachgeschaut], allerdings könnte man sich sowas programmieren).

Aus dem Makro raus wäre wohl sauberer... und was ich gefunden haben: psexec [\\computer[,computer[,..] | @File ][-u user [-p psswd]][-n s][-l][-s|-e][-i][-c [-f|-v]][-d][-w directory][-<priority>][-a n,n,...] cmd [arguments]
Demnach sollte man für psexec auch einen Nutzer spezifizieren können. Da du das Passwort dann in deiner Batch speichern musst würde ich dir empfehlen, dafür einen neuen Nutzer anzulegen, der ausser drucken ungefähr nichts darf.

Filipp
Member: Hatl
Hatl Jun 01, 2006 at 17:15:32 (UTC)
Goto Top
Halllo!

Verstehe, ich werd aus dem Makro drucken müssen.

Mit psexec hab ich es schon wie du es beschrieben hast versucht, es funktioniert auch fast.
Da ich keine Domän-User-Kennung mitschicken will hab ich auf dem Rechner einen Lokalen User angelegt. Dessen Kennung schick ich mit, es funktioniert aber nur wenn dieser User gerade angemeldet ist.
Ist gerade ein anderer User angemeldet (z.b.Admin) kommt der VBA-Fehler "Fehler beim Zugriff auf die Systemregistrierung"(kommt beim psexec-Aufruf jedes Excel mit Makro). Geb ich dem Lokalen-User Lokale-Adminrechte funktionierts problemlos.
Ist das so normal,warum? Kann ich das irgendwie umgehen?

Vielen Dank!

mfg