Hallo Bastian,
ich würde es folgendermassen machen (beachte bitte die Verlegung des spezifischen ErrorHandlings):
On Error Goto ErrorHandler
Dim workspace As New NotesUIWorkspace
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.document
Dim strServer As String
Dim vReplicaID As Variant
Dim strReplicaID As String
Dim strPathname As String
strServer = doc.Server(0)
vReplicaID = doc.ReplicaID
Dim oldvalue(0) As String
Dim newvalue(0) As String
oldvalue(0) = ":"
newvalue(0) = ""
newvReplicaID = Replace (vReplicaID, oldvalue, newvalue)
strReplicaID = newvReplicaID(0)
Dim db As New NotesDatabase( "", "" )
Call db.OpenByReplicaID( strServer, strReplicaID )
On Error 4060 Goto ErrorAccess
If Not db.Isopen Then
Print "Fehler bei Öffnen","Error"
Else
On Error Goto ErrorHandler
strPathname = doc.Pathname(0)
Call workspace.OpenDatabase( strServer, strPathname )
End If
On Error Goto ErrorHandler
GoOut:
Exit Sub
ErrorHandler:
Msgbox "Error #" & Err & " — " & Error$ & " (line: " & Erl & ")"
Resume GoOut
ErrorAccess:
Msgbox "Zugriffsverletzung"'
Resume GoOut
Damit verlegst Du das spezifische ErrorHandling genau an die Stelle, an der "es" passieren könnte. Ansonsten: Das Resume - wie Du es einsetzt - ist entscheidend, genauso, wie Du es eingesetzt hast. Sonst schleppst Du den aufgetretenen Error in das aufrufende Modul weiter, und es wäre zunächst unklar, warum denn der Fehler angeblich dann in dieser Routine aufgetreten ist (dies nur als Anmerkung für Forumsmitglieder, die diesen Thread später einmal lesen).
Ich hoffe, Dir noch ein klein wenig geholfen zu haben.
Bernhard