Clever-Excel-Forum

Normale Version: Prüfen ob Datei geöffnet und mit Bedingung andere Datei öffnen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo allerseits,

ich hab mich bereits durch einige Forumsbeiträge gewühlt, komme aber einfach nicht weiter.

WORUM GEHTS?
Ich habe ein Formular für eine Anfrage gebastelt. Einige Felder werden über Zellbezüge in einem Extrablatt konsolidiert.
Mit einem Makro sollen alle Anträge in einer Übersichtstabelle gesammelt werden.

Jeder Antrag wird einer Region (A oder B) zugeordnet und in einer eigenen Tabelle gesammelt (TA 1 und TB 1)

MEIN PROBLEM:
Das Kopieren funktioniert einwandfrei. Wenn allerdings die Tabelle TA 1 oder TB 1 bereits von einem Benutzer geöffnet wurde,
funktionierts nicht und es gibt auch keine Fehölemeldung

MEIN LÖSUNGSANSATZ:
Ich hab 2 Zusatztabellen angelegt: TA2 und TB2.
Wenn TA1 (oder TB 1) geöffnet ist, erscheint eine Messagebox und es wird TA 2 (oder TB 2) geöffnet, wo die Daten reinkopiert werden.

Nicht ideal, aber besser als jetzt

MEIN MAKRO:
Leider funktioniert mein Makro nicht.
Ich wäre sehr droh, glücklich und dankbar, wenn jemand einen Blick darauf werfen könnte und wüsste, wie der Fehler zu korrigieren ist

liebe Grüße

Stefan
___________


Code:
Sub Makro1()

If IsFileOpen("J:\Test\TA1.xlsx") And Range("A1").Value = "A" Then       ' In Zelle A1 wird ermittelt, ob Region A oder B
MsgBox "TA1 ist geöffnet"

Workbooks.Open filename:= _
"J:\Test\TA2.xlsx"

End If

If IsFileOpen("J:\Test\TB1.xlsx") And Range("A1").Value = "B" Then
MsgBox "TB1 ist geöffnet"

Workbooks.Open filename:= _
"J:\FB-FLH\FLH ALLE\08 Beratung_Unterland\Test\TB2.xlsx"

End If


End Sub
Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next
filenum = FreeFile()
Open filename For Input Lock Read As #filenum
Close filenum
errnum = Err
On Error GoTo 0
Select Case errnum
Case 0
IsFileOpen = False
Case 70
IsFileOpen = True
Case Else
Error errnum
End Select
End Function
End Function
Hallo,

kommentiere in deiner Funktion mal das On Error resume next aus. Lies auch mal hier.
Vielen Dank erst mal.
Werde ich bei nächster Gelegenheit probieren und Rückmeldung geben

LG
Stefan
Hallo Stefan,

ich lagere die Überprüfung aus, ob ein Workbook geladen ist:


Code:
Function IsWorkbookOpen(strWB As String) As Boolean
    On Error Resume Next
    IsWorkbookOpen = Not Workbooks(strWB) Is Nothing
End Function

Viel Erfolg!