Word-Text aus Anwendung aufrufen und bearbeiten..

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Word-Text aus Anwendung aufrufen und bearbeiten..

Beitrag von adrian »

Hallo zusammen

Ziel: Ich möchte direkt aus der Kundenkartei einen Brief einem Kunden schreiben. (Word und OpenOffice) Natürlich sollte die Adresse direkt ausgefühlt werden und das ZielOrt zum Speichern vordefiniert sein. Daher, Word sollte geöffnet werden die Adresse ausgefühlt und bereit bleiben um den Text zu schreiben. So, dass der Kunde am Schluss noch Speichern klicken kann und der Text im definiertem Ort gespeichert wird.

Im Prinzip klappt ja, mit den Beispielen, soweit alles bis auf: Word wird wieder geschlossen.

Daher: Die Vorlage wird genommen und die Felder werden ausgefühlt. Der SpeicherOrt wird mit "Saveas" übergeben. Doch danach sollte eben Word "stehen" bleiben und dem Kunden die Möglichkeit geben den Brief zu schreiben, falls er ja nicht speichern möchte könnte er ja auch noch abbrechen. Die Frage ist nun, wie bringe ich Word dazu nicht wieder zu schliessen. Jedoch so, dass das Object am Schluss auch wieder den Speicher freigiebt? Sollte man alles durchlaufen lassen und am Schluss Word mit RUN und der dem DOC neu starten? Wenn jedoch der Kunde das Dokument gar nicht speichern wollte?

oWord:documents:open("TEST.DOT")
oDoc := oWord:ActiveDocument
oBM := oDoc:Bookmarks
oDoc:saveas("KUNDE.DOC")
oDoc:close()
oWord:Quit()
oWord:destroy()


Ich bin sicher, dass dies schon jemand von Euch Kracks gelöst hat, und da bin ich natürlich für jeden Tip herzlich dankbar.

Zusatzfrage: Kenn jemand auch die Lösung für OpenOffice? :roll:

adrian
es Grüessli

Adrian
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Word-Text aus Anwendung aufrufen und bearbeiten..

Beitrag von brandelh »

Hi,

oWord:quit() schließt Word. Ohne diese Zeile müsste es offen bleiben ;-)
Wichtig ist auch, dass man oWord:visible := .t. um dieses in den Vordergrund zu holen (anzuzeigen),
sobald man will, dass der Anwender Word bedient.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Word-Text aus Anwendung aufrufen und bearbeiten..

Beitrag von brandelh »

eines noch ... wenn dieses Programm im Netzwerk läuft und mehrere gleichzeitig so einen Brief schreiben,
könnte es ein Problem damit geben, dass zwischen oWord:documents:open("TEST.DOT") und oDoc:saveas("KUNDE.DOC") einige Zeit vergeht. Es könnte dazu führen, dass der zweite ff. User eine Fehlermeldung ("schon benutzt ...") erhält. Ich würde bei open(cFilename,,.t.) die .DOT Vorlage readonly öffnen. Damit sollten alle Probleme beseitigt sein.

Alternativ könnte man auch direkt nach dem Öffnen schon ein erstes saveas() mit neuem Namen einbauen und danach nur noch save() aufrufen. Ob und wann es zu solchen Problemen kommt weiß ich nicht, dafür haben meine Programme zu wenig Konkurenz bei der Ausführung ;-) aber ich kann mir die ab und zu gemeldeten Fehlermeldungen nur so erklären.
Gruß
Hubert
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Word-Text aus Anwendung aufrufen und bearbeiten..

Beitrag von Rolf Ramacher »

Hi Adrian,

ich mache das ganze mit RTF-Dateien als Vorlage- der Ausdruck sieht bei mir so aus:

Code: Alles auswählen

#include "Gra.ch"
#include "Xbp.ch"
#include "Appevent.ch"
#include "Font.ch"
#include "Inkey.ch"
#include "xbpdev.ch"

#pragma Library( "XppUI2.lib" ) 
#pragma library( "ascom10.lib" ) 

Function Drucken( cDoc, cDrucker,oDlg) 
Local cActivePrinter 
Local oWord 
Local oDoc 

    oWord := CreateObject("Word.Application") 

   IF Empty( oWord ) 
     MsgBox( "Microsoft Word ist nicht installiert" ) 
     RETURN Nil
   ENDIF 

   oWord:visible   := .f.                               // Word unsichtbar! 
   cActivePrinter  := oWord:Activeprinter     // aktuellen Drucker feststellen 
   oWord:Activeprinter:= cDrucker               // Neuen Drucker setzen 
   oWord:documents:Open(cDoc)                  
   oDoc       := oWord:ActiveDocument 

	If AT("filbestandliste.rtf",cDoc) > 0
		oDlg:PageRangeSelected

		oDlg:PrintRange:=(XBPPDLG_PRINT_PAGERANGE)
	EndIf

   oDoc:PrintOut(.f.)                                  // .T.= Druck im Hintergrund 
   oWord:Activeprinter:= cActivePrinter       // alten Drucker setzen 
   oDoc:close() 
   oWord:Quit() 
   oWord:destroy() 
   oWord := NIL 
Return ( NIL )
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Word-Text aus Anwendung aufrufen und bearbeiten..

Beitrag von adrian »

Herzlichen Dank für die ersten Infos, Ihr seit ja wirklich cool.

Der Tip mit dem Readonly-parameter ist super. Auch das ohne Quit alles stehenbleibt, hatte jedoch mehr "Angst" das nach dem Destroy das ganze in einen unsicheren Zustand kommt.

Nun habt Ihr eventuell auch noch einen Tip wie ich zwar am Word mitteilen kann wie die Datei gespeichert werden soll (Namen), sofern ich speichern wähle, dies jedoch nicht automatisch geschehen soll? Daher, falls der Kunde bemerkt, dass er da eine falsche Vorlage aufgerufen hat, sollte auch keine Datei vorhanden sein.

Zusätzliche: Hat dies schon jemand mit OpenOffice gelöst ?

adrian
es Grüessli

Adrian
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Word-Text aus Anwendung aufrufen und bearbeiten..

Beitrag von AUGE_OHR »

hi,
adrian hat geschrieben: Zusätzliche: Hat dies schon jemand mit OpenOffice gelöst ?
versuche doch mal die "suchen" Function :)
gruss by OHR
Jimmy
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Word-Text aus Anwendung aufrufen und bearbeiten..

Beitrag von adrian »

Alles klar, hätte ich natürlich auch machen können, doch da im Register "OpenOffice" noch nichts eingetragen war, habe ich diesen Schritt noch nicht gemacht.

Werde ich natürlich sofort nachholen.


Zu meiner anderen Frage: Könnte man, anstelle des Dateinamen, auch nur den Speicherort übergeben? Daher, so das der Kunde beim beenden zuerst nach dem Dateinnamen gefragt wird, der Pfad jedoch festgelegt wäre, dann wäre die Lösung perfekt.

adrian
es Grüessli

Adrian
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Word-Text aus Anwendung aufrufen und bearbeiten..

Beitrag von brandelh »

adrian hat geschrieben:Auch das ohne Quit alles stehenbleibt, hatte jedoch mehr "Angst" das nach dem Destroy das ganze in einen unsicheren Zustand kommt.
hierdurch wird nur die "Fernbedienung" im Xbase++ Programm abgeschaltet, der COM Server Word bleibt weiter aktiv.
adrian hat geschrieben:Nun habt Ihr eventuell auch noch einen Tip wie ich zwar am Word mitteilen kann wie die Datei gespeichert werden soll (Namen), sofern ich speichern wähle, dies jedoch nicht automatisch geschehen soll?
In der Word Hilfe steht zu Document.name, dass dies der Name der Datei enthält, diese Eigenschaft ist nicht readonly, so müsste es möglich sein:

Code: Alles auswählen

oDoc:name := "MyDoc.doc"
adrian hat geschrieben: Zusätzliche: Hat dies schon jemand mit OpenOffice gelöst ?
im ActiveX Stammforum gibt es ein oder zwei Threads die sich mit OpenOffice befassen.
Dort müsste auch solche Dinge beschrieben sein ... ich weiß gar nicht mehr wer das gemacht hat :?
Gruß
Hubert
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Word-Text aus Anwendung aufrufen und bearbeiten..

Beitrag von adrian »

Hallo Huberth

Leider klappt dies mit dem "Name" leider nicht.

Da kommt die die xBase++ Fehlermeldung: "Name" ist eine schreibgeschütze Eigenschaft. und Absturz.

adrian
es Grüessli

Adrian
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Word-Text aus Anwendung aufrufen und bearbeiten..

Beitrag von brandelh »

Hi,

geh man manuell in Word, öffne eine .DOT, schalte MACRO Speicherung ein und versuche den Namen ohne Save As zu ändern.
Falls es über das Menü geht sieh in der Macro Aufzeichnung nach was VBA macht ;-)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Word-Text aus Anwendung aufrufen und bearbeiten..

Beitrag von AUGE_OHR »

adrian hat geschrieben: Daher: Die Vorlage wird genommen und die Felder werden ausgefühlt. Der SpeicherOrt wird mit "Saveas" übergeben. Doch danach sollte eben Word "stehen" bleiben und dem Kunden die

oDoc:saveas("KUNDE.DOC")
oDoc:close()
oWord:Quit()
oWord:destroy()
und was passiert wenn du

Code: Alles auswählen

  oDoc:saveas("")
verwendest ?
gruss by OHR
Jimmy
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Word-Text aus Anwendung aufrufen und bearbeiten..

Beitrag von adrian »

Da kommt, was verständlich ist, die Meldung das die Pfadangabe nicht korrekt ist oder es soll eine Datei aus der Liste ausgewählt werden.

Daher, dies ist der gleiche Effekt, wie wenn Du unter Word auf Speichern unter gehst und nichts eingeben würdest.

Was ich jedoch Suche ist die Vorgabe für den Pfad und den Dateinamen.

adrian
es Grüessli

Adrian
Antworten