Nazien of bestand reeds geopend is

  • Onderwerp starter Onderwerp starter Jemp
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Jemp

Gebruiker
Lid geworden
18 feb 2012
Berichten
145
Ik gebruik Excel 2007 en 2010.
Ik ben op zoek naar een code om na te zien of een bestand (op een server) reeds door iemand (op een andere PC) in gebruik is.
Op internet vind ik heel wat voorbeelden maar niets blijkt echt te werken (voor mijn geval).
Kan iemand mij een goede link aan de hand doen?

Momenteel gebruik ik volgende functie

Code:
Private Function IsOpen(strFile As String) As Boolean
Dim hdlFile As Long
On Error goto FileIsOpen:
hdlFile = FreeFile
Open strFile For Random Lock Read Write As hdlFile
IsOpen = False
Close hdlFile
exit Function

FileIsOpen:
IsOpen = True
Close hdlFile

End Function

Met bovenstaande code vind ik echter de open files niet !

Groetjes
JP
 
kun je hier iets mee?
Code:
Sub Knop1_Klikken()
    Dim TestWorkbook As Workbook
Application.DisplayAlerts = False
    Set TestWorkbook = Nothing
    On Error Resume Next
    Set TestWorkbook = Workbooks("jou workbook naam.xls")
    On Error GoTo 0

    If TestWorkbook Is Nothing Then
        MsgBox "The File is not open!"
    Else
        MsgBox "The File is open!"
        TestWorkbook.Save
        TestWorkbook.Close
    End If
    Application.DisplayAlerts = True
End Sub
 
Die functie werkt anders perfect hoor.
Gebruik onderstaande eens om het correcte pad v/h te controleren bestand te verkrijgen.
Gebruik dit volledige pad dan eens in de functie.
Code:
Sub tst()
MsgBox ThisWorkbook.FullName
End Sub
 
Beste Passan

Dacht tijdens mijn zoektocht naar een oplossing ergens gelezen te hebben dat jouw code enkel werkte wanneer de file op jouw PC geopend werd.
Wanneer "jou workbook name.xls" dus via een andere gebruiker (PC) geopend wordt zou ik hem dus niet vinden als geopend.

Ik zal het deze namiddag nog wel eens uittesten

Groetjes
 
Beste Rudi

Er was inderdaad een fout in mijn programmatie ivm het pad van de file.

Bijkomende vraag:
Ik wil de gevonden open file nu sluiten en doe dit via Workbooks(File).Close. Moet hierbij "File" enkel de naam van de file zijn of ook het volledige pad?

Groetjes
JP
 
Als je bij de het openen de handle die je terugkrijgt opslaat (zoals in het voorbeeld van pasan) dan kun je dus gewoon direct "close" aanroepen en werkt het altijd netjes.
 
Beste Wampier

Kan je je antwoord even toelichten?
Moet ik, naast workbooks(File).close, nog iets aan mijn code toevoegen dan?

Groetjes
JP
 
Laatst bewerkt:
Ah ik zie wat je bedoelt. Volgens de handleiding zou dat moeten werken met alleen de naam. Het pad is niet nodig. maa anders kunje altijd nog door alle files lopen als dat een probleem mocht vormen
 
Ik heb nu een code die er als volgt uitziet:

Code:
strGezochteFile = ThisWorkbook.Path & "\" & strArts & "*.xlsm"
File = Dir (strGezochteFile) 'hiermee los ik de onbekende "*" op
strGevondenFile = ThisWorkbook.Path & "\" & File 'dit is dus het volledige pad van de file waarvan ik wil nagaan of hij open is
If IsOpen (strGevondenFile) = True then 'dit is de functie waarvan ik de code eerder heb gegeven
Workbooks(File).Close saveChanges:=True 'hiermee wil ik de gevonden open file afsluiten
End If

Workbook(File).close geeft echter de Fout 9 = Subscript valt buiten het bereik.
Ergens doe ik dus toch iets fout blijkbaar.

JP
 
Je kunt even kijken met een messagebox wat er nu precies in "file" staat. mogelijk moet je .xls weghalen achter de naam
 
Het lijkt me onwaarschijnlijk dat jij een bestand dat op een andere PC open staat kunt sluiten.
 
Wampier

Bij de opgegeven fout bestaat "File" uit Naam.xlsm.
Wanneer ik de '.xlsm' uit de string haal en dus alleen de 'Naam' overhoud krijg ik exact dezelfde fout !
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan