Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Word aus Delphi drucken (https://www.delphipraxis.net/38855-word-aus-delphi-drucken.html)

AgentAS 25. Jan 2005 09:46


Word aus Delphi drucken
 
Hallo zusammen,

möchte gerne Word aus Delphi heraus drucken können, ohne in Word den Druckenbutton zu betätigen, oder Word zu starten!
Hier der Quellcode.

Delphi-Quellcode:
try
      word := CreateOleObject('Word.Application');
    except
      ShowMessage('Word konnte nicht gestartet werden!');
    end;
   
    word.Visible := True;
    word.Documents.Open(FileName := ExtractFilePath(ParamStr(0)) + 'BEGLEITSCHREIBEN-   RECHTSANWALT.doc');

    word.ActiveDocument.FormFields.Item('Name').Result := CBRechtsA.Text;
    word.ActiveDocument.FormFields.Item('Strasse').Result := EditRechtsAStrasse.Text;
    word.ActiveDocument.FormFields.Item('Plz').Result := EditRechtsAPLZ.Text;
    word.ActiveDocument.FormFields.Item('Ort').Result := EditRechtsAOrt.Text;
    word.ActiveDocument.FormFields.Item('Datum').Result := DatetoStr(Date);
    word.ActiveDocument.FormFields.Item('Mandant').Result := EditVName.Text + ' ' + EditName.Text;
    word.ActiveDocument.FormFields.Item('GaNr').Result := EditGaNr.Text;

Hab schon in der Hilfe geschaut finde aber nichts.

Gruß

Andreas

Bernhard Geyer 25. Jan 2005 09:51

Re: Word aus Delphi drucken
 
Zitat:

Zitat von AgentAS
Hab schon in der Hilfe geschaut finde aber nichts.

In der Delphi-Hilfe wirst Du auch nichts finden.
Für die Beschreibung ist der Hersteller der COM-Komponenten (hier MS) zuständig, und man wird auch in der MSDN fündig

AgentAS 25. Jan 2005 10:11

Re: Word aus Delphi drucken
 
Hallo,

bedanke mich. Hat funktioniert.

Gruß

Andreas

AgentAS 25. Jan 2005 10:53

Re: Word aus Delphi drucken
 
Hallo,

hab da aber noch ein Problem. Ich will das Word nach dem drucken sofort geschlossen wird.
Wenn ich aber wie folgt vorgehe
Delphi-Quellcode:
  word.Documents("Report.doc").Close;
  SaveChanges:=wdDoNotSaveChanges;
bringt er mir eine Fehlermeldung!

Gruß

Andreas

AgentAS 25. Jan 2005 13:15

Re: Word aus Delphi drucken
 
die Fehlermeldung lautet

Documents ist keine Methode

was ich aber nicht verstehe :(

Robert Marquardt 25. Jan 2005 15:14

Re: Word aus Delphi drucken
 
Probier es doch mit ShellExecute und dem Verb 'print' statt dem ueblichen 'open'.

Boombuler 25. Jan 2005 15:31

Re: Word aus Delphi drucken
 
Hi

Zitat:

Zitat von AgentAS
Hallo,
Delphi-Quellcode:
  word.Documents("Report.doc").Close;
bringt er mir eine Fehlermeldung!

ich hab zwar bis jetzt nur mit Excel gearbeitet aber ich denke mal
Delphi-Quellcode:
word.Documents['Report.doc'].Close;
Wird besser funktionieren... das was du geschrieben hast sieht mehr nach VB-Syntax aus!

Greetz
Boombuler

toms 25. Jan 2005 15:36

Re: Word aus Delphi drucken
 
Zitat:

Zitat von AgentAS
Delphi-Quellcode:
  word.Documents("Report.doc").Close;
  SaveChanges:=wdDoNotSaveChanges;


Warum so kompliziert?
Delphi-Quellcode:
if not VarIsEmpty(Word) then
  begin
    Word.DisplayAlerts := 0;
    Word.Quit;
    Word:= Unassigned;
  end;

AgentAS 26. Jan 2005 10:22

Re: Word aus Delphi drucken
 
Hallo,

@toms hat auch soweit funktioniert.

Delphi-Quellcode:
word.ActiveDocument.PrintOut;

if not VarIsEmpty(Word) then
begin
  word.DisplayAlerts := 0;
  word.Quit;
  word := Unassigned;
end;
Doch jetzt bringt er mir dauernd, dass er das Word Dokument speichern will. Dies kann man umgehen wenn man vorher die Methode word.ActiveDocument.close nutzt. Aber hier bringt er dann die Meldung, dass Word gerade beim drucken ist und dass beim abbrechen die Daten flöten gehen.
Ich will das Word automatisch gestartet wird, druckt und wieder schliesst, ohne irgend welche Meldungen. Kenne mich in VB leider nicht aus :(

Gruß

Andreas

Robert Marquardt 26. Jan 2005 13:05

Re: Word aus Delphi drucken
 
Versuchs doch mit ShellExecute.

AgentAS 26. Jan 2005 13:12

Re: Word aus Delphi drucken
 
Hallo,

keine Ahnung was du meinst mit ShellExecute?

Gruß

Andreas

Steve 26. Jan 2005 13:17

Re: Word aus Delphi drucken
 
Hi,

Hier im Forum suchenShellExecute :roll:

Delphi-Quellcode:
ShellExecute(handle,'print','c:\test.doc',nil,nil,sw_ShowNormal);
Gruß
Stephan :dance:

Robert Marquardt 26. Jan 2005 13:22

Re: Word aus Delphi drucken
 
SW_HIDE waere wohl besser.

Ich erwarte schon das man wenigstens einen groben Ueberblick ueber die Win32 Funktionen im Kopf hat.
Wer das nicht kann von dem erwarte ich das er faehig ist die Hilfe zu benutzen.
Wer unter Windows programmiert und das PlatformSDK nicht installiert hat der ist selber schuld.

Steve 26. Jan 2005 13:22

Re: Word aus Delphi drucken
 
Hi,

sw_hide macht hier keinen unterschied :?

Gruß
Stephan :dance:

Robert Marquardt 26. Jan 2005 13:28

Re: Word aus Delphi drucken
 
Ja ich weiss das Word sich hier erst garnicht zeigt, aber auf Details achten kann nie schaden.
Wer weiss was Microsoft als naechstes aendert.

shmia 26. Jan 2005 13:30

Re: Word aus Delphi drucken
 
Zitat:

Zitat von AgentAS
Doch jetzt bringt er mir dauernd, dass er das Word Dokument speichern will. Dies kann man umgehen wenn man vorher die Methode word.ActiveDocument.close nutzt. Aber hier bringt er dann die Meldung, dass Word gerade beim drucken ist und dass beim abbrechen die Daten flöten gehen.

2 Möglichkeiten:
1.) nicht im Hintergrund drucken; dazu gibt es in der Print-Methode den Parameter BackGround (oder so ähnlich)
man kan es auch in den Winword Optionen einstellen, ob im Hintergrund gedruckt werden darf
2.) prüfen, ob im Hintergrund noch gedruckt wird und so lange warten und dann erst Word schliesen
Ich würde die 1. Möglichkeit nehmen.

Steve 26. Jan 2005 14:01

Re: Word aus Delphi drucken
 
² Robert: Hm.. bei mir ists genau andersrum: Word zeigt sich immer - SW_HIDE, SW_SHOWNORMAL, direkt ausm Explorer... liegt evtl. an Word 2003 ??

Gruß
Stephan

toms 26. Jan 2005 16:38

Re: Word aus Delphi drucken
 
Zitat:

Zitat von AgentAS
Hallo,

@toms hat auch soweit funktioniert.

Delphi-Quellcode:
word.ActiveDocument.PrintOut;

if not VarIsEmpty(Word) then
begin
  word.DisplayAlerts := 0;
  word.Quit;
  word := Unassigned;
end;
Doch jetzt bringt er mir dauernd, dass er das Word Dokument speichern will.
Andreas

if not VarIsEmpty(Word) then
begin
word.DisplayAlerts := 0;
SaveChanges := wdSaveChanges;
word.Quit(SaveChanges, EmptyParam, EmptyParam); {var SaveChanges: OleVariant}
word := Unassigned;
end;

Robert Marquardt 26. Jan 2005 16:50

Re: Word aus Delphi drucken
 
Zitat:

Zitat von Steve
² Robert: Hm.. bei mir ists genau andersrum: Word zeigt sich immer - SW_HIDE, SW_SHOWNORMAL, direkt ausm Explorer... liegt evtl. an Word 2003 ??

Ich habe aus meiner Erinnerung geschoepft, daher kann ich unrecht haben.
Es auf Microsoft zu schieben ist aber selten falsch :mrgreen: , daher kann es gut an Word 2003 liegen.
Ich bin nie ueber Word 2000 hinausgekommen (wozu auch).

AgentAS 27. Jan 2005 08:50

Re: Word aus Delphi drucken
 
Hallo,

hat funktioniert! Danke euch.

Gruß

Andreas

toms 27. Jan 2005 08:57

Re: Word aus Delphi drucken
 
Zitat:

Zitat von Robert Marquardt
Versuchs doch mit ShellExecute.

Warum grad aufgeben und auf Shellexecute umsteigen?
Mit OLE funktioniert's doch wunderbar. Halt gewusst wie...

Steve 27. Jan 2005 09:29

Re: Word aus Delphi drucken
 
Hi,

das erinnert mich an "Warum einfach, wenns auch kompliziert geht" :mrgreen:

Das konnt ich mir nicht verkneifen, sorry :zwinker:

Gruß
Stephan :dance:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 Uhr.

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