Word 2010 soll original Datei als Kopie öffnen. Original Datei darf nicht verändert werden. Kann man so etwas mit VBA programmieren ?

3 Antworten

Wozu Makro?

Datei schreibschützen, der User muss sie dann unter neuem Namen und/oder Pfad speichern, wenn er sie bearbeitet erhalten will!

Wenn Du auch noch den Ordner schützt, kann er nicht einmal am Explorer die überschreiben (gibt ja so Spezialisten, die benennen die veränderte Datei zurück und überschreiben damit das Original im Verzeichnis; kann in Spezialfällen sogar sinnvoll sein, aber nicht für Jedermann)

Ansonsten kannst du mit einem Workbook_beforeclose das speichern-unter Dialogfeld aufrufen, ggf mit einer Vorgabe, die Du systematisch [Dateiname=links(Dateiname;Länge-2)&rechts(Dateiname;2)+1, das reicht für 100 Dateinamen, -3/;3 für 1000] kreierst.

(ebenfalls schreibgeschützt mit Bendef Passwort)


z.B. so:



Private Sub Document_Open()


Dim strPathAndFileName As String


strPathAndFileName = "Pfad\zur\Datei\Dok1.docm"


Documents.Add Template:=strPathAndFileName


Word.Application.Documents(strPathAndFileName).Close True


End Sub

Beim Speichern der geöffneten Kopie muss nur darauf geachtet werden, dass die Datei ohne Makros gespeichert wird (Klickt man auf speichern, kommt eine solche Abfrage, hier mit JA bestätigen).


Juri1996 
Beitragsersteller
 25.09.2015, 11:15

Ein bisschen Kenntnisse mit VBA habe ich auch.

0
azmd108  25.09.2015, 11:18
@Juri1996

Der Code muss in "ThisDocument" und dann in das Document Open Event, nicht in ein extra Modul. Beim Anpassen des Pfades/Dateinamen darauf achten, dass die Datei als eine makrofähige gespeichert ist (dann ändert sich die Endung)

1
Juri1996 
Beitragsersteller
 25.09.2015, 11:22
@azmd108

Das ist doch die Datei in der ich das haben möchte. Da muss ich doch einfach wenn ich VBA drinnen bin den Quellcode einfügen oder?

0
azmd108  25.09.2015, 11:28
@Juri1996

Zu allererst speicherst du die Datei als makrofähiges Word-Document (Datei --> Speichern unter --> Word Dokument mit Makros). Dann Ändert sich die Dateiendung von z.B. .docx in .docm.

Dann öffnest du die Datei wieder (die mit .docm) und erlaubst (falls du gefragt wirst) Makros.

Drücke ALT+F11. öffne links in der Spalte "ThisDocument" und kopiere dort den Code hinein. Passe strPathAndFileName entsprechend an. Speichere die Datei ab.

Wenn du die Datei nun öffnest, öffnet sich nicht die Originale, sondern bereits eine Kopie.

Der Benutzer später muss nur darauf achten, dass wenn er diese KOPIE ausgefüllt abspeichert, die aufploppende Abfrage mit "JA" beantwortet, dann ist alles schick.

1
Juri1996 
Beitragsersteller
 25.09.2015, 11:37
@azmd108

Super Vielen Dank hat funktioniert !

0
azmd108  25.09.2015, 11:38
@Juri1996

Jeder Person, die die originale Datei öffnet, muss Makros bzw. Inhalte aktivieren klicken, falls das abgefragt wird. Darauf musst du achten.

1
Juri1996 
Beitragsersteller
 25.09.2015, 11:41
@azmd108

Ja werde ich. Vielleicht kann man das mit einer MsgBox hinbekommen, die sich beim starten das Dokuments öffnet. Da könnte man nochmal explizit drauf hinweisen.

0
Juri1996 
Beitragsersteller
 25.09.2015, 11:14

Den Code habe ich ganz normal in Word unter Alt F11 und habe dann eine Prozedur erstellt. Den Quellcode habe ich dort eingefügt und den Pfad abgestimmt.

0
Juri1996 
Beitragsersteller
 25.09.2015, 10:56

Leider funktioniert das nicht. Habe es grad versucht. Wenn man die Datei öffnet darf man ruhig was reinschreiben, nur dann wenn man es speichern will muss eine Kopie erstellt werden, weil die Original Datei nicht verändert werden darf.

0
azmd108  25.09.2015, 11:02
@Juri1996

Poste mal dein Code und sag mir, wo du ihn hingeschrieben hast.


Die Datei öffnet sich automatisch direkt als Kopie und sollte den gleichen Inhalt wie die Originale Datei haben.

<

p>

1
Iamiam  25.09.2015, 11:36
@Juri1996

find ich ja gut so, ist das etwa anders gedacht???

1

Poste mal dein Code und sag mir, wo du ihn hingeschrieben hast.


Die Datei öffnet sich automatisch direkt als Kopie und sollte den gleichen Inhalt wie die Originale Datei haben.

Ups... sorry, das sollte eigentlich ein KOmmentar werden :-/