Comment tester si un fichier Excel est ouvert ?

marmotte18

XLDnaute Impliqué
Bonjour,

Je souhaiterais connaître la procédure VBA qui permet de tester si un fichier Excel est ouvert.

  • S'il est ouvert, fin de la procédure
  • Sinon, ouvrir le fichier
Merci par avance
 

Efgé

XLDnaute Barbatruc
Re : Comment tester si un fichier Excel est ouvert ?

Bonjour marmotte18, bof

Une fonction qui renvoi l'état d'un classeur :

VB:
Function IsFileOpen(ByVal Filename As String) As String
'Récupération du statut d'un fichier
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 = "Fermé"
Case 53
IsFileOpen = "Absent"
Case 70
IsFileOpen = "Ouvert"
End Select
End Function

Pour l'utiliser, dans la macro principale:

VB:
Select Case IsFileOpen(Le_Chemin_Entier_Du_Classeur)
Case "Absent"
Rep = MsgBox("Le fichier " & vbLf & " n'a pas été trouvé pour la consolidation." & vbLf _
& "Le traitement est arrété.", vbNo + vbCritical, "Erreur")
Exit Sub
Case "Ouvert"
Rep = MsgBox("Merci de fermer le fichier " & vbLf & " avant de lancer le traitement" & vbLf _
& "Le traitement est arrété.", vbNo + vbCritical, "Erreur")
Exit Sub
End Select

Avec par exemple Le_Chemin_Entier_Du_Classeur = "C:\toto\titi\Mon_Classeur.xls"

Cordialement

EDIt Bonjour Gilbert_RGI
 
Dernière édition:

bof

XLDnaute Occasionnel
Re : Comment tester si un fichier Excel est ouvert ?

Bonjour,
Pour faire court :
Code:
Function WbIsOpen(WbName As String) As Boolean
On Error Resume Next
WbIsOpen = Not Workbooks(WbName) Is Nothing
End Function
Pour tester :
Code:
Sub test()
If Not WbIsOpen("blabla.xls") Then Workbooks.Open ("blabla.xls")
End Sub
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 186
dernier inscrit
Eliyass