Mehrere geöffnete Dateien abfragen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Mehrere geöffnete Dateien abfragen
von: Thomas
Geschrieben am: 30.08.2015 14:02:48

Hallo,
ich muss 4 Excel Dateien abfragen ob sie geöffnet sind. (Mitte.xlsm, Sued.xlsm, Nord.xlsm und West.xlsm) Nur wenn alle vier geschlossen sind soll das Makro "Aktualisieren" ausgeführt werden. Weiter soll über eine Message Box ausgegeben werden welche Datei(en) geöffnet ist / sind. Für eine Datei bekomme ich das hin, aber bei vier Dateien muss ich leider auch nach umfangreicher Recherche in diversen Foren aufgeben. Vielleicht kann mir ja hier jemand weiterhelfen.
Gruß,
Thomas
Hier der Code für die eine Datei.
Sub DateiOffen()
Dim sFile As String, sPath As String
sFile = "Mitte.xlsm"
sPath = ThisWorkbook.Path & "\" & sFile
If WkbOpen("Mitte.xlsm") = False Then
Call Aktualisieren
Else
MsgBox (sFile) & " ist geöffnet!"
End If
End Sub

Private Function WkbOpen(sFile As String) As Boolean
   Dim wkb As Object
   On Error Resume Next
   Set wkb = Workbooks(sFile)
   If Not wkb Is Nothing Then
      WkbOpen = True
   End If
   On Error GoTo 0
End Function

Bild

Betrifft: AW: Mehrere Dateien abfragen, ob offen
von: Gerd L
Geschrieben am: 30.08.2015 15:01:04
Hallo Thomas!

Sub DateienOffen2()
Dim sFile As String, sPath() As String
Dim arrFiles As Variant
Dim i As Integer
arrFiles = Array("Mitte.xlsm", "Sued.xlsm", "Nord.xlsm", "West.xlsm")
For i = 0 To UBound(arrFiles)
sFile = arrFiles(i)
sPath(i) = ThisWorkbook.Path & "\" & sFile
If WkbOpen(sFile) = True Then GoTo EXITCauseOPEN
Next
Call Aktualisieren
Exit Sub
EXITCauseOPEN:
MsgBox (sFile) & " ist geöffnet!"
End Sub

Private Function WkbOpen(sFile As String) As Boolean
   Dim wkb As Object
   On Error Resume Next
   Set wkb = Workbooks(sFile)
   If Not wkb Is Nothing Then
      WkbOpen = True
   End If
   On Error GoTo 0
End Function
Gruß Gerd

Bild

Betrifft: AW: Mehrere Dateien abfragen, ob offen
von: Thomas
Geschrieben am: 30.08.2015 15:52:51
Hallo Gerd,
vielen Dank für Deine schnelle Hilfe. Habe allerdings den Code von Nepumuk verwendet.
Trotzdem besten Dank.
Viele Grüße,
Thomas

Bild

Betrifft: AW: Mehrere Dateien abfragen, ob offen
von: Werner
Geschrieben am: 30.08.2015 16:05:39
Hallo Gerd,
bin hier immer am mitlesen um was zu lernen. Ich hätte eine Frage zu deinem Code.
Warum benutzt du beim Pfad auch die Laufvariable i ein "sPath(i)" ginge das nicht auch ohne?
Danke und Gruß Werner

Bild

Betrifft: AW: Mehrere Dateien abfragen, ob offen
von: Gerd L
Geschrieben am: 30.08.2015 16:23:27
Hallo Werner,
doch, es geht auch ohne. Dies habe ich nur für den Fall mit aufgenommen, dass beim aufgerufenen Makro "Akualisieren" bei vier Dateien deren Pfade benötigt werden sollten.
Gruß Gerd

Bild

Betrifft: AW: Danke für die Antwort. o.w.T.
von: Werner
Geschrieben am: 30.08.2015 16:56:24


Bild

Betrifft: AW: Mehrere geöffnete Dateien abfragen
von: Nepumuk
Geschrieben am: 30.08.2015 15:32:55
Hallo,
ich bin kein Freund von "quick & dirty".

Option Explicit

Public Sub ExamineOpenFiles()
    
    Dim avntFileNames As Variant
    Dim ialngIndex As Long
    Dim strFilename As String
    Dim objWorkbook As Workbook
    
    avntFileNames = Array("Mitte.xlsm", "Sued.xlsm", "Nord.xlsm", "West.xlsm")
    
    For ialngIndex = LBound(avntFileNames) To UBound(avntFileNames)
        
        For Each objWorkbook In Application.Workbooks
            
            If objWorkbook.Name = avntFileNames(ialngIndex) Then
                
                strFilename = strFilename & avntFileNames(ialngIndex) & vbLf
                Exit For
                
            End If
        Next
    Next
    
    If strFilename = vbNullString Then
        Call Aktualisieren
    Else
        Call MsgBox(strFilename & vbLf & "ist geöffnet.", vbExclamation, "Hinweis")
    End If
End Sub

Gruß
Nepumuk

Bild

Betrifft: AW: Mehrere geöffnete Dateien abfragen
von: Thomas
Geschrieben am: 30.08.2015 15:49:38
Hallo Nepumuk,
das ging ja wirklich schnell. Der Code läuft tadellos!
Vielen herzlichen Dank.
Gruß, Thomas

Bild

Betrifft: Code von Nepumuk auf Netzlaufwerk
von: Thomas
Geschrieben am: 31.08.2015 10:21:59
Hallo,
der Code von Nepumuk läuft auf einem lokalen Rechner super.
Kann man diesen jedoch so abändern, dass er auch funktioniert wenn auf dem Netzlaufwerk von einem anderen Nutzer auf die Dateien zugegriffen wird?
Alle Dateien liegen immer in demselben Ordner und an demselben Speicherort.
Viele Grüße,
Thomas

Bild

Betrifft: AW: Code von Nepumuk auf Netzlaufwerk
von: Nepumuk
Geschrieben am: 31.08.2015 19:01:52
Hallo,
wie meinst du das? Etwa ob ein anderer Benutzer eine der vier Dateien geöffnet hat? Wird denn in diese Dateien geschrieben, oder nur gelesen?
Gruß
Nepumuk

Bild

Betrifft: AW: Code von Nepumuk auf Netzlaufwerk
von: Thomas
Geschrieben am: 01.09.2015 09:17:52
Hallo,
genau darum geht es. Ob ein anderer Nutzer eine der Dateien göffnet hat. Die Nutzer schreiben auch in die jeweiligen Dateien "West", "Mitte", "Sued" und "Nord". Die von den Nutzern eingegebenen Daten werden dann in der Tabelle "Gesamt" zusammengefasst.
Gruß,
Thomas

Bild

Betrifft: AW: Code von Nepumuk auf Netzlaufwerk
von: Nepumuk
Geschrieben am: 01.09.2015 09:25:42
Hallo,
dann öffne die Dateien doch einfach schreibgeschützt, dann spielt es keine Rolle ob die auf einem anderen Rechner geöffnet ist oder nicht. Du hast sowieso keine Möglichkeit per VBA rauszubekommen auf welchem Rechner sie offen ist.
Gruß
Nepumuk

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Mehrere geöffnete Dateien abfragen"