23.06.2017, 09:41
'
Hallo Storax,
dein Code funktioniert bei mir nur richtig wenn die Datei nicht freigegeben ist. Sobald ich eine "freigegebene" Datei nehme wird diese nicht gefunden und es kommt die Meldung "File Is Not open".
Und ich möchte nur wissen ob die Datei auf meinem Rechner bereits geöffnet ist.
Ich stelle mir das so vor:
1) prüfen ob die Datei "Test1" geöffnet ist.
2) wenn bereits geöffnet dann soll nichts weiter passieren und das "Programm" kann weiter abgearbeitet werden.
3) wenn die Datei noch nicht offen ist soll diese geöffnet werden.
ich habe mir noch einmal den Vorschlag von Fennek vorgenommen, bekomme hier aber einen Fehler "Fehler beim Kompilieren - Next ohne For".
Kann mir hier jemand weiter helfen?
Danke und Gruß
(23.06.2017, 08:34)Storax schrieb: [ -> ]Code:Option Explicit
Private Declare Function lOpen Lib "kernel32" Alias "_lopen" _
(ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
Private Declare Function lClose Lib "kernel32" _
Alias "_lclose" (ByVal hFile As Long) As Long
Private Const OF_SHARE_EXCLUSIVE = &H10
Private Function FileIsOpen(strFullPath_FileName As String) As Boolean
Dim hdlFile As Long
Dim lastErr As Long
hdlFile = -1
hdlFile = lOpen(strFullPath_FileName, OF_SHARE_EXCLUSIVE)
If hdlFile = -1 Then
lastErr = Err.LastDllError
Else
lClose (hdlFile)
End If
FileIsOpen = (hdlFile = -1) And (lastErr = 32)
End Function
Sub CheckFileOpen()
If FileIsOpen("Full File Name") Then
MsgBox "File Is open"
Else
MsgBox "File Is Not open"
End If
End Sub
Hallo Storax,
dein Code funktioniert bei mir nur richtig wenn die Datei nicht freigegeben ist. Sobald ich eine "freigegebene" Datei nehme wird diese nicht gefunden und es kommt die Meldung "File Is Not open".
Und ich möchte nur wissen ob die Datei auf meinem Rechner bereits geöffnet ist.
Ich stelle mir das so vor:
1) prüfen ob die Datei "Test1" geöffnet ist.
2) wenn bereits geöffnet dann soll nichts weiter passieren und das "Programm" kann weiter abgearbeitet werden.
3) wenn die Datei noch nicht offen ist soll diese geöffnet werden.
ich habe mir noch einmal den Vorschlag von Fennek vorgenommen, bekomme hier aber einen Fehler "Fehler beim Kompilieren - Next ohne For".
Code:
Sub geoeffnet_neu()
For Each WB In Workbooks
If WB.Name = "Test.xlsm" Then
MsgBox "geöffent"
Else
Workbooks.Open "O:\Test.xlsm"
Next WB
End If
End Sub
Kann mir hier jemand weiter helfen?
Danke und Gruß