2
www.ChF-Online.de  

Sicherheitskopien an beliebigem Ort speichern (AddIn)

   Neuigkeiten
   API-Aufrufe in VBA
   VBA2HTML
   Word
   Word-VBA
 Verschiedenes
 Feld-Arbeiten
 Form-Sachen
 Menü-/Symbolleisten
 VBA und Lotus Notes
 VBA und Mail
 Inside VBAIDE
 Von Word nach Outlook
aktiv aktiv Fix-und-Fertiges/Projekte
 Aufgaben in OL eintragen
 Einfacher Dateibrowser
 Formatvorlagen
 Formularfelder sichern
 Formluarfelder formatieren
 Formluarfelder formatieren 2
 Formluarfelder formatieren 3
 Formular-QuickInfos
 Kontextmenü erstellen
aktiv  Sicherheitskopien an bel. Orten
 Sicherheitskopien erstellen Word 2007/2010
 ToolTipps ändern
 Dokumenteigenschaften kopieren
 (Jahres-)Kalender erstellen
 Zeichen-Zähler
   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 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 

 Besucher: 0 online  |  0 heute  |  0 diesen Monat  |  2213304 insgesamt | Seitenaufrufe: 29   Letzte Änderung: 24.06.2006 © 2001-18 Christian Freßdorf
  Die Geschichte wiederholt sich nicht, wohl aber die Leichtfertigkeit, mit der sie gemacht wird.
W. Weidner
 powered by phpCMS and PAX