2
www.ChF-Online.de  

autom. Sicherheitskopien speichern

   Neuigkeiten
   API-Aufrufe in VBA
   VBA2HTML
   Word
   Word-VBA
aktiv aktiv Verschiedenes
 Dateiname ohne Endung
 Dokumentstrukturanzeige
 Fenster anordnen
 Fensterliste
 Fensterliste (II)
 Kalender erstellen
 Kommentarinformationen
 Lesezeichen
 Beliebigen Ordner öffnen
 Position der Einfügemarke
 Seitenanfang/-ende
 Shapes ansprechen
aktiv  Sicherheitskopien erstellen
 Word-Startparameter
 Word-Startparameter II
 Startordner "Bild einfügen"
 Tags finden u. bearbeiten
 Tags finden/bearbeiten (II)
 Text2WordArt
 Textbausteine verwenden
 Textmarken (I)
 Textmarken (II)
 Überschrift zu Textmarke
 VBA-Konverter
 Wasserzeichen
 Zeichen tauschen
 Feld-Arbeiten
 Form-Sachen
 Menü-/Symbolleisten
 VBA und Lotus Notes
 VBA und Mail
 Inside VBAIDE
 Von Word nach Outlook
 Fix-und-Fertiges/Projekte
   Word2007 (RibbonX)
   Word2010 (RibbonX)
   Outlook-VBA
   Links zu VB(A)
   DocToHelp
   Netport Express XL
   Astronomie
   Gästebuch
   Volltextsuche
   Sitemap
   Buch:Word-Programmierung
   Impressum & Kontakt
   Datenschutzerklärung
Getestet unter Word2000Getestet unter WordXP  
Makro/Datei speichern
Print

Word legt, sofern die Option Sicherungskopie erstellen in den Eigenschaften verwendet wird, beim Speichern automatisch eine Kopie des letzten Dokumentstandes vor dem Speichern an. Damit hat man im Falle einer Beschädigung der aktuellen Datei wenigstens den Stand der letzten Sicherung.
Allerdings wird diese Sicherungskopie immer im aktuellen Speicherverzeichnis angelegt und trägt den Namen "Sicherungskopie von <Dateiname>.wbk".

Möchte man nun aber diese Sicherungskopie an anderer Stelle speichern, nicht nur den letzten Stand behalten und sogar noch mit einem anderen Namen versehen, z.B. mit Angabe des Datums/Uhrzeit, so kommt man um eine VBA-Lösung oder ein externes Programm nicht herum.

Einen möglichen Lösungsweg möchte ich im folgenden aufzeigen:
Hierbei werden zwei neue Symbole verwendet, über die zum einen der Speicherort ausgewählt und zum anderen die aktuelle Datei in diesen Ordner gespeichert werden kann. Dabei wird an den Dateinamen der aktuelle Zeitstempel angehängt.

Beispiel: Speichern  Beispiel: Speichernpfad

Zur Auswahl des Speicherpfades (Ordners) wird auf das API  SHBrowseForFolder zurückgegriffen. Der ausgewählte Ordner wird anschließend in die Caption-Eigenschaft des Speichern-Symbols eingetragen und beim Speichern eines Dokumentes ausgelesen (Normalerweise bietet sich dazu die Tag-Eigenschaft des Controls besser an, jedoch wird diese Eigenschaft zur Identifizierung der Schaltflächen verwendet).

Beim Speichern wird dann zuerst der Dateiname und Pfad des zu sichernden Dokuments über die Document-Eigenschaften ermittelt und intern gespeichert. Anschließend wird der Dateiname mit dem Datum und der Uhrzeit erweitert und unter diesem neuen Dateinamen im festgelegten Speicherordner gesichert. Erst danach wird das Dokument im zuvor ausgelesen Originalverzeichnis gespeichert.
Mit dieser Reihenfolge wird sichergestellt, dass das Dokument bei der weiteren Bearbeitung auch weiterhin unter dem original Dateinamen im ursprünglichen Verzeichnis gespeichert wird.

Sub DateiSpeichernBak() 
Dim strFile As String 
Dim strPath As String 
Dim oDoc As Document 
Dim strFolder As String 
strFolder = CommandBars("Standard").FindControl(msoControlButton, 1, _
  "BrowseFolder").Caption 
Set oDoc = ActiveDocument 
strFile = oDoc.Name 
strPath = oDoc.Path 
If Dir(c_Path, vbDirectory) <> "" Then 
  oDoc.SaveAs strFolder & "\" & Format(Date, "yymmdd") & "-" & _
    Format(Time, "hhmm") & "_" & strFile, wdFormatDocument 
End If 
oDoc.SaveAs strPath & "\" & strFile, wdFormatDocument 
End Sub 

Das vollständige Makro umfasst folgende Prozeduren:

  • Prozedur zum Erstellen der Symbole in der Standard-Symbolleiste
  • Prozedur zur Auswahl des Speicherordners
  • Speichern-Prozedur (entspricht dem Menüpunkt "Speichern"
  • SpeichernUnter-Prozedur (entspricht dem Menüpunkt "SpeichernUnter"

Soll dieses Sichern automatisch bei jedem (manuellen) Speichern des Dokuments erfolgen, bietet es sich an, den Speichern-Befehl zu ersetzen. Dazu muss der Prozedurname mit dem Menünamen übereinstimmen:

  • Word 97/2000: DateiSpeichern() bzw. DateiSpeichernUnter()
  • Word2000/XP: FileSave() bzw. FileSaveAs()

Eine Erweiterungsmöglichkeit könnte nun darin bestehen, den Dateinamen etwas flexibler, z.B. über eine Eingabemaske, festzulegen.

Hinweis
Eine Dokumentvorlage, die sich als AddIn einbinden lässt, findet Ihr unter  Sicherheitskopien an beliegigem Ort speichern (AddIn).


 Besucher: 0 online  |  0 heute  |  0 diesen Monat  |  2202539 insgesamt | Seitenaufrufe: 61   Letzte Änderung: 24.06.2006 © 2001-18 Christian Freßdorf
  Jeder Satz, den ich äußere, muß als Frage verstanden werden, nicht als Behauptung.
Niels Bohr, 1885-1962, dänischer Physiker
 powered by phpCMS and PAX