Sie brauchen eine handliche #VBA-#Funktion, die eine #Excel-#Arbeitsmappe öffnet – aber nur, wenn diese nicht ohnehin bereits offen ist?
Nehmen Sie diese und verwenden Sie sie z.B. so:
Set myWb = WbOpen(varPath, varFileName)
Sie prüft, ob eine Arbeitsmappe mit dem Namen varFileName geöffnet ist, und versucht sie, falls sie nicht geöffnet ist, im Pfad varPath zu öffnen.
Public Function WbOpen(myFolder As Variant, myFile As Variant) As Workbook
'checks if a workbook is already open
'if not: opens it
'if not existing: error message
'to be used for e.g. Set myWb = WbOpen(varPath, varFileName)
On Error Resume Next 'Fehlerbehandlung
Set WbOpen = Workbooks(myFile)
If WbOpen Is Nothing Then
'if Workbook is not open, find it
If Dir(myFolder & "\" & myFile) <> "" Then
'if found: open it
Set WbOpen = Workbooks.Open(myFolder & "\" & myFile, _
UpdateLinks:=False)
Else
'if not found: tell the user
MsgBox "File does not exist:" & vbLf & _
myFolder & "\" & myFile, vbOKOnly + vbCritical, "File " & _
myFolder & "\" & myFile & " not found."
End If
Else
WbOpen.Activate
End If
End Function