Speichern verhindern (Word XP)

Wie kann ich (evtl. mittels VBA) verhindern, dass ein Anwender eine Dokumentvorlage unter dem gleichen Namen speichert und diese dadurch unbrauchbar macht?
Die Vorlage wird beim Öffnen automatisch mit Daten aus einer Access-Datenbank gefüllt…
Danke Euch
Gruß Uli

Hallo, Uli!

Wie kann ich (evtl. mittels VBA) verhindern, dass ein Anwender
eine Dokumentvorlage unter dem gleichen Namen speichert und
diese dadurch unbrauchbar macht?
Die Vorlage wird beim Öffnen automatisch mit Daten aus einer
Access-Datenbank gefüllt…

Da dazu vermutlich eh die Makros aktiviert sein müssen, geht das mit VBA. Schau mal in der VBA-Hilfe unter dem Ereignis DocumentBeforeSave (des Application-Objekts) nach. Hier Sniplet:

Public WithEvents appWord as Word.Application

Private Sub appWord\_DocumentBeforeSave \_
 (ByVal Doc As Document, \_
 ByVal 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

Entweder den Code in Deine Vorlage oder, wenn Du das Dokument aus Access heraus erstellst, analog zu obigem Code.
Dort dann auf einen hardvercodeten oder dynamisch ausgelesenen Dateinamen überprüfen und das Speichern durch Setzen von Cancel=True verhindern.

Grundsätzlich aber gar nicht, denn die Anwender kommen über kurz oder lang auf die Idee, völlig andere Dokumente unter dem betreffenden Namen zu speichern, wie ich leider am eigenen Leib erfahren musste. Das geht dann nur über die Zugriffsrechte auf Systemebene…

Gruß, Manfred

Wenn Du die „Vorlage“ nicht als .doc speicherst, sondern mittels „Speichern unter“ als Dokumentvorlage (.dot), weiss auch Word, dass es sich um eine Vorlage handelt. Wenn Du jetzt „Neu“ wählst oder mittels VBA/OLE documents.add eine neue Datei erzeugst, sieht dieses zwar aus wie Deine Vorlage, heisst aber „Dokument1“ und fragt beim Speichern, wie es genannt werden soll.

Willst Du vermeiden, dass der Benutzer den Namen bestimmt, füge im Visualbasic-Editor unter „Thisdocument“ eine Ereignisprozedure für die Ereignisse close und save ein und speichere per Code.

Gruss, Dennis

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]