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.
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
der "Fullname" ist
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