AW: Makro nur dann weiter ausführen wenn ext. Mapp
24.04.2008 22:06:14
Matthias
Hallo Josef,
Da du wohl Daten aus dieser Mappe brauchst, wird es dir nichts nützen, wenn sie in einer anderen Instanz oder evtl. sogar auf einem anderen Rechner im Netz geöffnet ist.
Deshalb mein Vorschlag:
Function MakeSureWorkbookIsOpen(Pfad As String, Optional ShowError = False) As Boolean
' Pfad: Voller Pfad zur Mappe (z.B. "C:\Test\Mappe1.xls")
' ShowError (optional): wenn True, wird eine evtl. Fehlermeldung beim Versuch,
' die Mappe zu Öffnen, angezeigt.
Dim wb As Workbook, offen As Boolean
For Each wb In Application.Workbooks
If UCase(wb.FullName) = UCase(Pfad) Then _
MakeSureWorkbookIsOpen = True: Exit Function
Next wb
Set wb = ActiveWorkbook
On Error Resume Next
Application.ScreenUpdating = False 'Öffnen im Hintergrund
Workbooks.Open Filename:=Pfad
If Err.Number > 0 Then
If ShowError Then MsgBox Err.Description, vbCritical, "Fehler " & Err.Number
MakeSureWorkbookIsOpen = False
Exit Function
End If
MakeSureWorkbookIsOpen = True
wb.Activate
Application.ScreenUpdating = True
End Function
Sub test()
MsgBox "Starte Makro, Prüfe auf offene Mappe:"
If MakeSureWorkbookIsOpen(ThisWorkbook.Path & "\Mappe1.xls") = False Then
MsgBox "Makro wird beendet!"
Exit Sub
End If
MsgBox "OK, weiter"
End Sub
Gruß Matthias