VBA Tipp: Verweise sichern/restaurieren

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Wenn ich meine Anwendung an anderem Ort installiere, will ich sicherstellen, dass alle von mir verwendeten Verweise auch vorhanden sind. Das ist speziell dann interessant, wenn es sich bei der Datenbank um eine MDE- oder Laufzeitversion handelt, da dann der Verweise-Dialog nicht zur Verfügung steht.

Lösung

Mit diesen beiden Funktionen können die Dateinamen der Verweise in eine Datei gesichert und bei Bedarf wieder hergestellt werden:

Public Function VerweiseSichern(Optional DateiName)
Dim Ref As Reference, Tmp, F As Integer
  If IsMissing(DateiName) Then
    Tmp = CurrentDb.Name
    DateiName = Mid(Tmp, 1, InStr(Tmp, Dir(Tmp)) - 1) & "Verweise_"
    Tmp = Dir(CurrentDb.Name)
    DateiName = DateiName & Mid(Tmp, 1, InStr(Tmp, ".") - 1) & ".txt"
  End If
  F = FreeFile
  Open DateiName For Output As #F
  For Each Ref In Application.References
    If Not Ref.IsBroken Then Print #F, Ref.Name; ";"; Ref.FullPath
  Next Ref
  Close F
End Function
 
Public Function VerweiseRestaurieren(Optional DateiName)
Dim Ref As Reference, Lin, RefN, RefF, Tmp, F As Integer
  If IsMissing(DateiName) Then
    Tmp = CurrentDb.Name
    DateiName = Mid(Tmp, 1, InStr(Tmp, Dir(Tmp)) - 1) & "Verweise_"
    Tmp = Dir(CurrentDb.Name)
    DateiName = DateiName & Mid(Tmp, 1, InStr(Tmp, ".") - 1) & ".txt"
  End If
  F = FreeFile
  Open DateiName For Input As F
  Do While Not EOF(F)
    Line Input #F, Lin
    RefN = Mid(Lin, 1, InStr(Lin, ";") - 1)
    RefF = Mid(Lin, InStr(Lin, ";") + 1)
    On Error Resume Next
    Set Ref = Application.References(RefN)
    If Err.Number <> 0 Then
      On Error GoTo 0
      'nicht vorhanden, erzeugen
      Application.References.AddFromFile RefF
    End If
  Loop
  Close F
End Function


Wiki hinweis.png Anmerkung: Dieses Beispiel geht davon aus, dass sich die Dateien am Zielrechner an gleichem Ort befinden - das wird sicher nicht immer der Fall sein. In diesem Fall muss die obige Routine dann um einen Dateidialog oder ähnliches zur Bestimmung des geänderten Dateipfades ergänzt werden.