Hi Franz,
ich melde mich mit folgendem Code, da Du schreibst, Du bist erst seit 3Tagen+ mit VBA beschäftigt und Ich glaube, dass Dich das interessieren könnte:
2 verschiedene Technicken um zu prüfen, ob eine Mappe geöffnet ist.
Falls ja, Objektvariable zuweisen für weiteren Zugriff.
Falls nein, zuerst die Mappe öffnen und dann die Objektvariable zuweisen.
Sub Variante1()
Dim wkbMaster As Workbook
Dim wkbZiel As Workbook
'
On Error GoTo FinishErr
Set wkbMaster = Workbooks("Masterliste.xlsm")
'Weiterführender Code
FinishErr:
Select Case Err.Number
Case 9 '#Laufzeitfehler: Workbook nicht offen
setWkbMaster =l Workbooks.Open("C:\Test\Masterliste.xlsm")
Resume Next
End Select
End Sub
Sub Variant2()
Dim wkbMaster As Workbook
Dim wkbZiel As Workbook
Dim wkb As Workbook
Dim bWorkbookOffen As Boolean: bWorkbookOffen = False 'False = 0;
'
For Each wkb In Application.Workbooks
If wkb.Name = "Masterliste.xlsm" Then
bWorkbookOffen = True 'Hinweis: in VBA ist True = -1
End If
Next wkb
'
If bWorkbookOffen = False Then
MsgBox "Workbook nicht offen"
set wkbMasterliste = Workbooks.Open("C:\Test\Masterliste.xlsm")
Else
MsgBox "offen"
Set wkbMasterliste = Workbooks("Masterliste.xlsm")
End If
End Sub
Hinweis:
In beiden Varianten kann verkürzen, Variablen weglassen, konstanten einsetzen um den Code performanter zu gestalten.
Leserlicher wird er dadurch für ungeübte Augen allerdings nicht.
Hoffe es hilft Dir ein Stückchen weiter.
gruß
Marco
|