Geopend bestand

Status
Niet open voor verdere reacties.

Tweety1

Gebruiker
Lid geworden
6 mrt 2013
Berichten
637
Onderstaande macro checkt of er een bestand geopend is.

Hoe kan ik deze veranderen zodat hij checkt of er 3 bestanden geopend zijn.
En hoe krijg ik deze in 1 msgbox waarin wordt vermeld welk bestand wel en niet geopend zijn.


Code:
Sub Test_If_File_Is_Open_1()
    Dim TestWorkbook As Workbook

    Set TestWorkbook = Nothing
    On Error Resume Next
    Set TestWorkbook = Workbooks("Book1.xlsm")
    On Error GoTo 0

    If TestWorkbook Is Nothing Then
        MsgBox "The File is not open!"
    Else
        MsgBox "The File is open!"
    End If

End Sub

mvg

Kasper
 
Maak er een Function van in plaats van een Sub. Dan kan je die functie aanroepen waar bij je de naam van het te controleren werkboek opgeeft. Op deze manier:
Code:
Function FileIsOpen(Doc As String) As Boolean
    Dim TestWorkbook as Object
    On Error Resume Next
    Set TestWorkbook = Workbooks(Doc)
    On Error GoTo 0

    If TestWorkbook Is Not Nothing Then
        FileIsOpen = True
    End If
End Function

Voorbeeld van gebruik:
Code:
Sub Test()
    If FileIsOpen("document.xlsx") Then
        MsgBox "Bestand is geopend"
    End If
End Sub
 
Laatst bewerkt:
Thanks
Hoe kan deze dan aanpassen voor 3 verschilende bestanden en 1 melding?
 
Aan de functie hoef je niks te veranderen. Je kunt hem toch gewoon 3x aanroepen en zo een string opbouwen in de sub waar vandaan je hem aanroept? Zoiets dus:
Code:
Sub Test()
    Dim Documenten(3) As String
    Dim Bericht As String
    Dim i As Integer
    
    Documenten(1) = "Document1"
    Documenten(2) = "Document2"
    Documenten(3) = "Document3"
    
    For i = 1 To 3
        If FileIsOpen(Documenten(i)) Then
            Bericht = Bericht & Documenten(i) & vbCrLf
        End If
    Next i
    
    If Bericht = "" Then
        MsgBox "Er zijn geen open bestanden"
    Else
        MsgBox Bericht, vbInformation, "Deze bestanden zijn open"
    End If
End Sub
 
Laatst bewerkt:
Bij het uitvoeren krijg ik de volgende melding
Ongeldig gebruik van object.
Nothing word geselecteerd.
 
De code is maar een voorbeeld en moet wel goed toegepast worden. Ik kan er dus zo niks van zeggen zonder te zien wat je precies hebt gedaan.

Wellicht dat de functie iets anders geschreven moet worden. Probeer deze eens:
Code:
Function FileIsOpen(Doc As String) As Boolean
   Dim x As Workbook
    On Error Resume Next
    Set x = Workbooks(Doc)
    If Err = 0 Then
        FileIsOpen = True
    Else
        FileIsOpen = False
    End If
End Function
 
Laatst bewerkt:
@tweety

Begin eerst eens met een basisboek VBA; dat maakt de communicatie een stuk eenvoudiger.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan