Speicherort für Word festlegen [Erl]

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1905
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Speicherort für Word festlegen [Erl]

Beitrag von Herbert » Mi, 08. Feb 2012 12:52

Ich habe Strukturen für die digitale Ablage von Dokumenten. Darin besteht die Möglichkeit, nicht nur mit Doppelklick die bestehenden Dokumente zu öffnen, sondern je nach Berechtigung selber neue Dokumente zu erstellen.

Code: Alles auswählen

    		oApp:documents:add()
So weit so gut.
Die Dokumente befinden sich pro Adresse in verschiedenen Unterverzeichnissen. Die Vorlage ist irgendwo zentral abgeglegt.
Da ich nun nicht weiss, ob der Benutzer nach dem Öffnen eines neuen Dokuments dieses auch wirklich speichern will, möchte ich nicht vorweg mit einem Save mit Pfad- und Namensangabe das Dokument in der Ablage bereits erzeugen.
Kann ich irgendwie nach dem :add dem Dokument irgendwie den künftigen Speicherort vorgeben?
Zuletzt geändert von Herbert am Di, 14. Feb 2012 9:19, insgesamt 1-mal geändert.
Grüsse Herbert
Immer in Bewegung...

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7249
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Tom » Mi, 08. Feb 2012 13:16

Hallo, Herbert.

Word (ab Office 2007, soweit ich weiß) schreibt den "Standard-Speicherort" in die Reg:

HKCU\Software\Microsoft\Office\<Version>\Word\Options ->
DOC-PATH

<Version> ist z.b. 14.0 (Office 2010)

Den könntest Du beim Word-Aufruf abholen, sichern, überschreiben und anschließend wiederherstellen. Problematisch wird das allerdings, wenn Word oder Deine App abschmieren - dann ist Dein Temp-Speicherort Standard. Alternativ könntest Du auch früh ein "SaveAs" auslösen und darin einen Pfad angeben.
Herzlich,
Tom

Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1905
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Herbert » Mi, 08. Feb 2012 15:15

Danke Tom
In die Reg darf ich nicht schreiben, da Geräte des öffentlichen Dienstes "betroffen" sind.
Ein Save möche ich nicht unbedingt, weil bereits eine Datei entsteht, obwohl ich nicht weiss, wie der Nutzer sie benennen möchte und ob er überhaupt speichern will.
Grüsse Herbert
Immer in Bewegung...

Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 538
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Muecke » Mi, 08. Feb 2012 18:47

Hallo Herbert

ich hab dies gelöst, das ich das Blatt speichere, in dem Ort wo alle Doku sich befinden( Dieser Pfad kann der User selber einstellen).
Wenn nun der Kunde gerufen wird, schau ich ob dieses Dokument vorhanden ist.Hab dies mit einer DB gelöst.
So werden auch keine Doku doppelt gespeichert mit dem gleichen Namen,
oder Doku die nicht zum Kunden gehören werden gelöscht, obwohl diese zuerst beim Kunden gespeichert wurden.


Gruss Thomas

Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1905
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Herbert » Do, 09. Feb 2012 7:51

Hoi Thomas
Ich weiss ja nicht, wie das Dokument benennt wird. Und jedeer aufgerufene kunde hat für die digitalen Dokumente, somit auch für die selber verfassten (Word-)Dateien seine eigene Datenstruktur.
Selbst wenn ich einen Fantasienamen zum wie von dir beschrieben vorgängig speichern nähme, weiss ich nicht einmal, ob dann tatsächlich gleich unter diesem Namen abgespeichert würde. In dem Fall dürfte ich ja das Dokument nicht mehr löschen.
Grüsse Herbert
Immer in Bewegung...

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14503
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von brandelh » Do, 09. Feb 2012 8:30

Hi,

wird nicht automatisch der Standardspeicherort des jeweiligen Kunden gewählt ?
Warum sollte der dann falsch sein ...
Gruß
Hubert

Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1905
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Herbert » Do, 09. Feb 2012 10:40

Es geht um das Erstellen eines neuen Dokuments. Die Vorlage dazu ist für alle Kunden dieselbe und lagert irgendwo bei den allgemeinen Word-Vorlagen. Die Frage nach dem zielordner kommt erst bei "Speichern unter" und verweist momentan auf den Speicherort der Vorlage.
Das bringt mich auf eine andere Frage: Kann ich eine Wordvorlage (.dot) öffnen, wobei das aktuelle Verzeichnis bereits dasjenige des passenden Kunden ist?
Grüsse Herbert
Immer in Bewegung...

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14503
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von brandelh » Do, 09. Feb 2012 10:49

Ich habe schon .DOC nach .DOT umbenannt und mit Explorer-Doppelklick geöffnet.
Word (hier noch 2003) öffnet dann diese .DOT und benennt sie intern zu Dokument1.doc
Beim Speichern kommt Speichern als mit "Eigene Dateien" als Verzeichnisvorgabe. Wie immer bei mir

Bei dir sollte es aber so gehen, wenn du bisher immer das Verzeichnis der .DOT voreingestellt bekommen hast.
Gruß
Hubert

Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1905
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Herbert » Do, 09. Feb 2012 11:34

Ja eben, ich will ja nicht "Eigene Dateien" oder sonst irgend was Zentrales, sondern das jeweilige individuelle Verzeichnis des entsprechend aktiven Kunden.
Grüsse Herbert
Immer in Bewegung...

Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2068
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Koverhage » Do, 09. Feb 2012 14:19

Ja,

Du musst doch nur den Pfad bei der Dot Datei mit angegeben.
Gruß
Klaus

Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 262
Registriert: So, 28. Mär 2010 19:21

Re: Speicherort für Word festlegen

Beitrag von azzo » Do, 09. Feb 2012 15:17

Hallo Herbert,
ich habe sehr ähnliche Probleme.
Nachdem ich nun deine Frage gelesen habe, habe ich mir überlegt, ob man eventuell die Zeit und Größe des angelegten Dokuments speichern sollte und
beim Beenden prüfen, ob sich diese Werte geändert haben und wenn nicht, das Dokument einfach wieder löschen.
In dem Fall hätte der User nichts geändert beziehungsweise gespeichert.
Ich werde das testen.


Mfg
Otto

Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1905
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Herbert » Do, 09. Feb 2012 16:00

Ja, Otto, scheint die einzig mögliche Lösung zu sein! Wobei der Zeitstempel sehr zuverlässig ist.
Grüsse Herbert
Immer in Bewegung...

Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 538
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Muecke » Fr, 10. Feb 2012 6:55

Herbert

Wenn ich doch dies über eine DB speichere, weiss ich doch, wohin das Doku geht, und welcher Kunde es ist+ die Zeit und das Datum.

Was ich natürlich zwingend dem Anwender vorgebe, entweder mein Dokuname oder er muss es eingeben.

Wenn ich eine Vorlage öffne über Word, so muss ich dem Doku zuerst ein Namen geben damit dies gespeichert wird in .Doc.
Das gleiche gilt auch wenn du verschiede Vorlagen erstellen willst.

Gruss Thomas

Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1905
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Herbert » Fr, 10. Feb 2012 8:06

Ich weiss wohin es sollte. Ich weiss aber nicht den Namen des Dokuments, das dies der Anwender erst beim Speichern vergibt.
Ich weiss auch nicht, wann und ob der Anwender das Dokument überhaupt speichert.

Wenn du mit normal.dot eine Dokument öffnest, schlägt Word "Dokument1" vor, beim Speichern interessanterweise "Dok1.docx" in "Bibliotheken/Dokumente". Diese Namensvergabe und auch der Aufruf zum Speichern gibt also keinen Anhaltspunkt über ein mögliches Verzeichnis, ausser der Vorschlag von Tom.
Grüsse Herbert
Immer in Bewegung...

Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2068
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Koverhage » Fr, 10. Feb 2012 8:59

Herbert,

grundsätzlich gibt Word das vor was in der aktuellen Version Standard ist.
Ab Office 2007 docx, davor doc
Das kannst Du aber einstellen.
z.B. RTF Datei aber File extension = doc
WDFormatDocument := 100, ; // RTF File extension *.doc
oDoc:saveas(cSaveAs,WDFormatDocument)
Als cSaveas gibst Du den Namen an unter dem es gespeichert werden soll.
(Bei mir z.B. ein temporäre datei, ermittelt mit gettempfile, diese wird dann in den entsprechenden Ordner des Kunden kopiert)
Wenn der Kunde jetzt die Datei woanders speichert, hast Du den neuen Dokumentnamen mit Pfad ja in Word, der sollte
sich ja auch auslesen lassen.
Diese Datei einfach am Schluss mit filemove in den entsprechenden Ordner verschieben.
Gruß
Klaus

Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 538
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Muecke » Fr, 10. Feb 2012 12:51

Herbert
Wenn du mit normal.dot eine Dokument öffnest, schlägt Word "Dokument1" vor, beim Speichern interessanterweise "Dok1.docx" in "Bibliotheken/Dokumente". Diese Namensvergabe und auch der Aufruf zum Speichern gibt also keinen Anhaltspunkt über ein mögliches Verzeichnis.
Das solltest du in der Programierung abfangen.

Gruss Thomas

Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1905
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Herbert » Fr, 10. Feb 2012 14:52

dann sag mir bitte, wie ich das in Xbase erledigen soll
Grüsse Herbert
Immer in Bewegung...

Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 538
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Muecke » Sa, 11. Feb 2012 14:58

Herbert

Du musst den User zwingen, bevor er das Worddoc öffnet, einen Namen zu vergeben.
Danach hast Du alle möglichkeiten. Die Frage stellt sich natürlich, wie Du das Word dem User zu verfügung gibst.
Muss der User nach deiner Geige tanzen, oder nach Word??
Bei mir muss er nach meiner, da ich im ja auch versichere, dass er die Docu wieder findet unter seinem Kunden.
Dies geschieht auch für die Vorlagen.

Ich habe dies doch mal in der XUG vorgeführt.

Gruss Thomas

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11348
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Speicherort für Word festlegen

Beitrag von AUGE_OHR » Di, 14. Feb 2012 4:21

Herbert hat geschrieben:Ich weiss wohin es sollte. Ich weiss aber nicht den Namen des Dokuments, das dies der Anwender erst beim Speichern vergibt.
Ich weiss auch nicht, wann und ob der Anwender das Dokument überhaupt speichert.
du "fragst" ja auch nicht danach ;)

du müsste die Events von Word "auswerten" was aber mit

Code: Alles auswählen

CreateObject("Word.Application")
nicht getan ist.
wie es mit o:dynamicCast() und Outlook geht hab ich schon mal im Forum gezeigt.

das "SaveAs()" ist ein "Common Dialog" welche durch die Method "ShowSave()" geöffnet wird.
die Property FileName
Returns/sets the path and filename of a selected file.
die Property InitDir
Returns/sets the initial file directory.
und ob der User was gespeichert hat kann du ja per Directory() Vergleich Festellen
gruss by OHR
Jimmy

Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1905
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Re: Speicherort für Word festlegen

Beitrag von Herbert » Di, 14. Feb 2012 9:18

Alles klar, danke.
ich lass den User entscheiden, wann und ob er eine neue Datei speichert. ich will nicht nach Thomas' £Vorgehen gleich sofort einen Save provozieren. Es geht ja ausschlisslich um neu zu erstellende Dateien. Bei bestehenden Dateien ist ohnehin alles korrekt.
Die Lösung von Tom wäre der wohl einzig korrekte Ansatz (temporäre Registry-Anpassung).
Ich machs nun so: Mache einen SaveAs im pro Kunde eigenen Verzeichnis mit einem fix vorgegebenen Namen. Beim Schliessen des Kundenfensters prüfe ich, ob die Grösse aus der gegebenen Vorlage unverändert geblieben ist und das Erstellungsdatum das Aktuelle ist. In diesem Fall lösche ich die Datei, heisst der benutzer hat die Datei nicht verändert und auch nicht willentlich gespeichert. Dasselbe Vorgehen läuft bei Aufrufen des Kunden ab.
Interessant übrigens, dass das .docx, welches aus der gegebenen Vorlage entsteht, bei jeder Neuerstellung jeweils eine leicht andere Grösse aufweist. Die Ursprungsgrösse muss als nach jedem SaveAs separat neu zwischengespeichert werden.
Grüsse Herbert
Immer in Bewegung...

Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 538
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Kontaktdaten:

Re: Speicherort für Word festlegen [Erl]

Beitrag von Muecke » Di, 14. Feb 2012 18:49

Herbert

Ein kleiner Hinweis noch. Nicht alle arbeiten mit office2010( docx ).

Gruss Thomas

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11348
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Speicherort für Word festlegen

Beitrag von AUGE_OHR » Mi, 15. Feb 2012 1:12

Herbert hat geschrieben:ich lass den User entscheiden, wann und ob er eine neue Datei speichert.
...Es geht ja ausschlisslich um neu zu erstellende Dateien.
ich würde ja einfach "abfragen" ob das Dokument schon gespeichert wurde.

Code: Alles auswählen

If ActiveDocument.Saved = False Then
Herbert hat geschrieben:Ich machs nun so: Mache einen SaveAs im pro Kunde eigenen Verzeichnis mit einem fix vorgegebenen Namen. Beim Schliessen des Kundenfensters prüfe ich, ob die Grösse aus der gegebenen Vorlage unverändert geblieben ist und das Erstellungsdatum das Aktuelle ist. In diesem Fall lösche ich die Datei, heisst der benutzer hat die Datei nicht verändert und auch nicht willentlich gespeichert. Dasselbe Vorgehen läuft bei Aufrufen des Kunden ab.
der Name des Dokument ist

Code: Alles auswählen

ActiveDocument.Name
der "Fullname" ist

Code: Alles auswählen

ActiveDocument.FullName
und dann siehe mal unter Ereignisse
----------
Application.DocumentBeforeSave-Ereignis
Tritt ein, bevor ein geöffnetes Dokument gespeichert wird.

Doc Erforderlich Document Das Dokument, das gespeichert wird.
SaveAsUI Erforderlich Boolean True, wenn das Dialogfeld Speichern unter angezeigt werden soll.
Cancel Erforderlich Boolean False, wenn das Ereignis eintritt. Wenn die Ereignisprozedur dieses Argument auf True festlegt, wird das Dokument beim Beenden der Prozedur nicht gespeichert.

Code: Alles auswählen

 Public WithEvents appWord as Word.Application
 Private Sub appWord_DocumentBeforeSave _
        (ByVal Doc As Document, _
        SaveAsUI As Boolean, _
        Cancel As Boolean)

    Dim intResponse As Integer

    intResponse = MsgBox("Do you really want to " _
        & "save the document?", _
        vbYesNo)

    If intResponse = vbNo Then Cancel = True
 End Sub 
was du mit "ohne Benutzereingabe speichern" umgehen kannst

Code: Alles auswählen

Documents.Save NoPrompt:=True, _
    OriginalFormat:=wdOriginalDocumentFormat 
Herbert hat geschrieben:Interessant übrigens, dass das .docx, welches aus der gegebenen Vorlage entsteht, bei jeder Neuerstellung jeweils eine leicht andere Grösse aufweist. Die Ursprungsgrösse muss als nach jedem SaveAs separat neu zwischengespeichert werden.
hm ...ich "denke" es gibt eine "COMPARE" oder so womit man feststellen kann ob sich was geändert hat.
siehe doch mal in der VBA Hilfe unter Application oder Document -> Ereignis

das die Dateien grösser werden liegt an die Informationen (History) die jedes mal in das Dokument geschrieben werden ohne das sich der Inhalt sichtbar ändert.

und noch ein Tip : der User könnte vorher schon Word geöffnet haben !

Code: Alles auswählen

 Set wd = New Word.Application
 Set wdDoc = _
    wd.Documents.Open("C:\My Documents\doc1.doc")
 If wdDoc.UserControl = True Then
    MsgBox "This document was created or opened by the user."
 Else
    MsgBox "This document was created programmatically."
 End If
gruss by OHR
Jimmy

Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1905
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Re: Speicherort für Word festlegen [Erl]

Beitrag von Herbert » Mi, 15. Feb 2012 14:20

Muecke hat geschrieben:Herbert
Ein kleiner Hinweis noch. Nicht alle arbeiten mit office2010( docx ).
Gruss Thomas
Ja, spielt aber keine Rolle, dann ist's einfach ein .doc
Grüsse Herbert
Immer in Bewegung...

Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1905
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Re: Speicherort für Word festlegen [Erl]

Beitrag von Herbert » Mi, 15. Feb 2012 14:26

Danke Jimmy für die vielen Hinweise. kann ich sicher für ähnliche Dinge gebrauchen.

Hier geht es ausschliesslich um ein neues Dokument, welches aus einer Vorlage entsteht.
Also, "speichern unter" ist vorgegeben.
Was ich wollte (und nun mit Umgehung habe) ist, dass Word mir den korrekten Speicherort bereits vorschlägt, und zwar einen, der in einer Speichervariablen bekannt ist (pro Kunde ein eigenes Verzeichnis).
Grüsse Herbert
Immer in Bewegung...

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11348
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Speicherort für Word festlegen [Erl]

Beitrag von AUGE_OHR » Fr, 17. Feb 2012 3:03

Herbert hat geschrieben:Was ich wollte (und nun mit Umgehung habe) ist, dass Word mir den korrekten Speicherort bereits vorschlägt, und zwar einen, der in einer Speichervariablen bekannt ist (pro Kunde ein eigenes Verzeichnis).
Yup das sollte du mit

Code: Alles auswählen

ActiveDocument.FullName
versuchen.
damit aber der User nicht was verändert dafür sind die anderen Tips gedacht denn der User ist das eigentliche Problem ;)

ich bin sogar noch eine Schritt weiter gegangen bei meiner "Verwaltung" und simuliere den Desktop und Explorer mittel Listview.
Wenn der User dann eine Datei anclickt, anlegt, löscht, verschiebt habe ich damit die "Kontrolle"
gruss by OHR
Jimmy

Antworten