Aktuelle Seite:
/vba/vbpspeichernunter2.htm
Letzte Änderung: 24.06.2006

Getestet unter Word2000Getestet unter WordXPGetestet unter Word2003Getestet unter Win2000Getestet unter WinXP  
VBA-Code verfügbar: Ja
Beispiel anzeigen
Makro/Datei speichern
Print

Wie im Artikel  Sicherungskopie erstellen beschrieben, legt Word, sofern die Option Sicherungskopie erstellen in den Speichern-Optionen verwendet wird, beim Speichern automatisch eine Kopie des letzten Dokumentstandes vor dem Speichern im selben Verzeichnis an. Mit den in dem Artikel vorgestellten Makros lassen sich Sicherungskopien von den Dateien an beliebigem Ort sichern.

Mit diesem AddIn erübrigt sich das manuelle Erstellen der Symbole, da das AddIn - wenn es z.B. in den Startup-Ordner von Word kopiert wird - diese automatisch bereit stellt.

Beispiel: Speichern  Beispiel: Speichernpfad

Als zusätzliche Erweiterung klinkt sich das AddIn in die Menübefehle Datei speichern und Datei speichern unter ein. Wenn Ihr zusätzlich die Tasten <Strg>+<Shift> drückt, wird eine Sicherungskopie im eingestellten Backup-Ordner erstellt.

Damit sich das Makro nur bei diesen beiden Tasten in den jeweiligen Menübefehl einklinkt, muss trotzdem der entsprechende Befehl abgefangen werden. Mit Hilfe des APIs GetKeyState werden die Tasten <Strg> und <Shift> auf Tastendruck geprüft:

Function funcIsTasteGedrückt(iTastenCode As Integer) As Boolean  
' Überprüft Bit-weise, ob eine Taste gedrückt ist  
  Debug.Print GetKeyState(iTastenCode)
  If (GetKeyState(iTastenCode) And &HF000&) = &HF000& Then
    funcIsTasteGedrückt = True
  End If
End Function  

Wenn die Taste gedrückt wurde, wird ein True zurückgeliefert.

In den abgefangenen Menübefehlen wird dann unterschieden, ob der normale hinterlegte Befehl ausgeführt wird, oder ob ein Datei-Backup erstellt wird.

Wichtig
Sobald Ihr einen (Menü-)Befehl durch das entsprechend benannte Makro abfangt, müsst Ihr die Standard-Funktion mitimplementieren, auch wenn keine weitere eigene Aktion ausgeführt wird. In dem AddIn müssen daher im If-Zweig, wenn beide Tasten nicht gedrückt wurden, die eigentlichen Funktion Datei speichern und Datei speichern unter nachprogrammiert werden.

Die nachfolgende Funktion fängt z.B. den Menüpunkt Datei speichern unter ab:

Sub DateiSpeichernUnter()  
' wird die Strg/Control-Taste beim Anklicken des Menüs "DateiSpeichernUnter"
' gedrückt gehalten, wird ein Backup der Datei im BackUp-Ordner angelegt  
Dim strFile As String
Dim strPath As String
Dim oDoc As Document
   On Error GoTo DateiSpeichernUnter_Error
Set oDoc = ActiveDocument
Dim strFolder As String
Dim ret As Single
If Documents.Count = 0 Then Exit Sub  
If funcIsTasteGedrückt(VK_CONTROL) = False Or funcIsTasteGedrückt(VK_SHIFT) = False Then
  Dialogs(wdDialogFileSaveAs).Show
Else
  ' Ordner auslesen  
  strFolder = fkt_ReadRegEntry
'CommandBars("Standard").FindControl(msoControlButton,1,"BrowseFolder").Caption 
  MsgBox "Es wird ein Datei-Backup im folgenden Ordner erstellt:" & vbCrLf & strFolder, _
    vbInformation, c_Title
  With Dialogs(wdDialogFileSaveAs)
    ret = .Show
    ' Name und Pfad der Datei auslesen  
    strFile = .Name
    strPath = CurDir
    If ret = -1 Then
      fkt_SaveBackType strFolder, strFile, oDoc
    ' eigentliche Datei im ausgewählten Ordner/Namen speichern  
      Select Case oDoc.Type
      Case wdTypeDocument
        oDoc.SaveAs strPath & "\" & strFile, wdFormatDocument
      Case wdTypeTemplate
        oDoc.SaveAs strPath & "\" & strFile, wdFormatTemplate
      End Select
    End If
  End With
End If
   On Error GoTo 0
   Exit Sub  
DateiSpeichernUnter_Error:
  MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure " & _
    "DateiSpeichernUnter of Modul SpeichernBak"
End Sub 

 www.chf-online.de/vba/vbpspeichernunter2.htm © 2001-11 Christian Freßdorf (Zaphod-Systems)