Word Ole -> Speicherpfad ändern

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.

Word Ole -> Speicherpfad ändern

Beitragvon Flenser » 23. Jan 2019, 16:31 Word Ole -> Speicherpfad ändern

Ich versuche gerade für eine Doc-Datei, die von meinem Programm aus einer Dokumentenvorlage erstellt wurde, den Speicherpfad zu ändern, der beim
"Speichern unter" von Word angeboten wird.
Standardmäßig wird ja der Pfad angeboten, der bei den Word-Eigenschaften eingestellt ist.

Der Code
Code: Alles auswählen
 
varDokument := varWdApp.Documents.path('\\Pfad');   
 

funktioniert leider nicht, weil die path-Eigenschaft des Documents schreibgeschützt ist.

Da die erstellten Dokumente jedesmal in einem anderen Pfad gespeichert werden, bringt es nichts den Standard-Speicherpfad in Word zu ändern. Ich möchte
die Dokumente aber auch nicht einmal automatisch speichern, weil vor dem Speichern noch etwas an den Dokumenten in Word gemacht wird.

Für Ideen oder Vorschläge wäre ich dankbar...
Flenser
 
Beiträge: 10
Registriert: 28. Okt 2014, 12:49

Beitragvon MacWomble » 24. Jan 2019, 11:59 Re: Word Ole -> Speicherpfad ändern

Wird das was in Word noch gemacht wird, automatisch gemacht?

Generell halte ich es nicht für sinnig, Word fest einzubinden. besser ist es, über das Aufrufen des gespeicherten Dokuments die Standardanwendung starten zu lassen. Also nicht Word starten, sondern das Dokument - und wo das liegt, ist dir ja bekannt.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 775
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.80 / FP 3.3.1 SVN Rev 41791 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon braunbär » 24. Jan 2019, 14:25 Re: Word Ole -> Speicherpfad ändern

Er spricht von einer Dokumentvorlage. Die liegt in einem eigenen Ordner, und wenn die Vorlage gestartet wird, dann macht Word daraus ein neues Dokument.
Dass er das erst begonenne Dokument vor der (manuellen) Bearbeitung noch nicht im richtigen Ordner speichern wil, damit es nachher im richtigen Ordner abgelegt wird, kann ich auch nachvollziehen, denn wenn der ganze Vorgang irgenwie abgebrchen wird, dann bleibt ihm ein dort eine halbfertige Datei übrig.

Ich hatte einmal vor Langem wit Word Automation zu tun, um den Output von Dos-Programmen mit Hilfe von Word Vorlagen "aufzuhübschen", das Programm hat das aus der Vorlage erstellte Dokument dann gedruckt, gefaxt (so lange ist das schon her :D ) und gemailt, aber es musste nicht gespeichert werden. Deshalb war ich mit der Frage nie konfrontiert. Und die Dokumentation der Word API hat mich damals auch zur Verzweiflung gebracht.
Zuletzt geändert von braunbär am 25. Jan 2019, 15:39, insgesamt 1-mal geändert.
braunbär
 
Beiträge: 286
Registriert: 8. Jun 2017, 17:21

Beitragvon wp_xyz » 24. Jan 2019, 14:44 Re: Word Ole -> Speicherpfad ändern

Warum erstellst du die Dokumentenvorlage nicht mit Word direkt?
wp_xyz
 
Beiträge: 2864
Registriert: 8. Apr 2011, 08:01

Beitragvon Flenser » 30. Jan 2019, 14:16 Re: Word Ole -> Speicherpfad ändern

Die Vorlage *.dot existiert im Ordner XY

Code: Alles auswählen
 
try
  varWdApp := CreateOleObject('Word.Application'); // erstellt das Wordobjekt
except
  WriteLn('MS Word kann nicht gestartet werden.'); // Fehlerbehandlung
end;
 
 
varWdApp.Visible := True;   // macht Word sichtbar
varDokument := varWdApp.Documents.add('\\Pfad\Anschreiben_Pb_Fl.dot');         
 
varbookmark:=varDokument.bookmarks.item('Pruefnummer');             
varTmp:=(Pruefnr);           
varBookmark.Range.Text :=  varTmp;
 
...
 
varWdApp := Unassigned;
varDokument := Unassigned;
varTmp := unassigned;
varbookmark := Unassigned;  
 


Wenn ich jetzt zum neuen Worddokument wechsel und "Speichern unter" wähle, wird mir der Standardpfad angeboten, der in den Word-Eigenschaften eingetragen ist.
Wähle ich im Speichern-Dialog einen anderen Pfad und speichere die Datei, wird dieser Pfad ja (so glaube ich) irgendwo in der Doc-Datei hinterlegt.

Und diesen Speicherpfad würde ich gern vorher festlegen, damit beim "Speichern unter" in Word gleich der richtige Ordner angeboten wird.



Ich versuche auch noch die Anzahl der Seiten im Worddokument zu ermitteln:
Code: Alles auswählen
Blattzahl:=    varDokument.Selection.Information(wdNumberOfPagesInDocument);


Funktioniert aber leider nicht, weil Lazarus "wdNumberOfPagesInDocument" nicht kennt.

Kann ich "wdNumberOfPagesInDocument" irgendwie umschiffen? Oder anders die Anzahl der Seiten ermitteln?

Unter http://wiki.lazarus.freepascal.org/WordAutomation/de#Auszug_aus_den_Wordkonstanten wird die Konstante leider nicht aufgeführt.
Flenser
 
Beiträge: 10
Registriert: 28. Okt 2014, 12:49

Beitragvon MacWomble » 30. Jan 2019, 16:18 Re: Word Ole -> Speicherpfad ändern

Flenser hat geschrieben:Wenn ich jetzt zum neuen Worddokument wechsel und "Speichern unter" wähle, wird mir der Standardpfad angeboten, der in den Word-Eigenschaften eingetragen ist.
Wähle ich im Speichern-Dialog einen anderen Pfad und speichere die Datei, wird dieser Pfad ja (so glaube ich) irgendwo in der Doc-Datei hinterlegt.

Und diesen Speicherpfad würde ich gern vorher festlegen, damit beim "Speichern unter" in Word gleich der richtige Ordner angeboten wird.


Ich mache das (vereinfacht) so:

- Ich habe einen Ordner mit den Vorlagen (im OpenDocument-Format, also docx oder odt)
Die Vorlagen enthalten einfache Text-Platzhalter (zB #Betreff#).
- Der Anwender wählt in meinem Programm eine Vorlage, das Programm entpackt diese, ersetzt die Platzhalter und packt alles in eine neue Datei am Ort meiner Wahl.
Dann wird die Datei gestartet und öffnet mit der Standardanwendung (das muss nicht Word sein, geht auch mit anderen Office-Programmen)
Wenn nun gespeichert wird, ist sie auch da, wo sie hin soll.

Durch den Verzicht von OLE bleibe ich flexibel und plattformunabhängig, durch eigene Platzhalter behalte ich die Kontrolle.
OLE ist m.E. nicht hierfür geeignet, da die Bindung zu einem Programm die Anwender zu MS nötigt - in der heutigen Zeit ein No-go! :twisted:
Auch ist es mir egal, welches Programm der Anwender verwendet, solange es mit dem Format umgehen kann. :shock:

Das ganze funktioniert z.B. für den kompletten Schriftverkehr einer Anwaltskanzlei seit Jahren problemlos.

Die Seitenzahl findet sich eventuell ebenfalls in der neu erzeugten Datei, da muss man dann evtl. nochmal was entpacken zum Auslesen. (nur eine Vermutung!)
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 775
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.80 / FP 3.3.1 SVN Rev 41791 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

• Themenende •

Zurück zu Sonstiges



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried