Workbook deja ouvert ?

  • Initiateur de la discussion Initiateur de la discussion jb
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

jb

Guest
Salut,

J'ai besoin de savoir avec VB si un workbook est déjà ouvert ou pas, mais je ne connais pas la fonction qui permet de le savoir.
Si quelqu'un la connait, merci de me la donner.

A+

JB
 
bonjour

déjà ouvert dans ton application ou sur le réseau ?

pour le premier cas, un exemple parmi d'autres du constructeur de <www.xakte.de>

Public Function IsWorkbookOpen(tWkb As String, _
Optional tPath As String = vbNullString) As Boolean
Dim wkb As Workbook

On Error Resume Next
Set wkb = Workbooks(tWkb)
If wkb Is Nothing Then
On Error GoTo PROC_ERR
If Len(tPath) Then
tPath = IIf(Right(tPath, 1) = "\", tPath, tPath & "\")
Set wkb = Workbooks.Open(tPath & tWkb)
End If
IsWorkbookOpen = True
End If

PROC_EXIT:
Exit Function
PROC_ERR:
IsWorkbookOpen = False
Resume PROC_EXIT
End Function


second cas
Frage:
Wie kann ich feststellen ob eine Excelmappe bereits
in einer anderen Excel Instanz (Netzwerk) geöffnet
ist?

Antwort:

Die Funktion IsFileInUse liefert True zurück sofern
die Datei bereits geöffnet ist.

Aufruf Beispiel:

...
If IsFileInUse("C:\Temp\Mappe1.xls") = TRUE Then
Call MsgBox("Mappe bereits geöffnet!", vbCritical)
End If
...
'------------------------------------------------------------
Function IsFileInUse(tFileName As String) As Boolean
On Error Resume Next

Dim hFile As Long

hFile = FreeFile()

Open tFileName For Random Access Read Lock Read Write As #hFile
IsFileInUse = Err.Number <> 0
Close #hFile

End Function
'------------------------------------------------------------
'EndOfCode

bye
Stéphane
 
Merci beaucoup Steph, tu m'as bien aidé. J'avoue que j'ai pas tout compris à l'exemple que tu m'as envoyé, mais j'ai essayé de garder que ce dont j'avais vraiment besoin et ça marche (mon pb était le premier cas de figure dans ta réponse).

Encore merci et A+

JB
 
Public Function IsWorkbookOpen(tWkb As String, _
Optional tPath As String = vbNullString) As Boolean
'=> déclaration de la fonction IsWorkbookOpen qui requiert qu'on lui passe un paramètre obligatoire et un paramètre optionnel.

Dim wkb As Workbook
'=> déclaration d'une variable objet de type workbook

On Error Resume Next
'=> indiquer à excel le comportement à suivre

Set wkb = Workbooks(tWkb)
'=> en utlisant la variable tWkb, qui contient le nom du classeur à contrôler, on tente l'affectation de la variable objet

'=> si le classeur n'est pas présent, la gestion d'erreur va permettre de continuer l'exécution de la macro

'=> si le classeur n'existe pas, la variable wkb ne contiendra rien du tout
'=> si elle ne contient rien du tout, le fichier n'est pas ouvert, il va être ouvert par la macro

If wkb Is Nothing Then

'=> gestion d'erreur supplémentaire
On Error GoTo PROC_ERR

If Len(tPath) Then
tPath = IIf(Right(tPath, 1) = "\", tPath, tPath & "\")
Set wkb = Workbooks.Open(tPath & tWkb)
End If
IsWorkbookOpen = True
End If

PROC_EXIT:
Exit Function

=> si une erreur s'est produite le classeur n'existe pas, on retourne le résultat booléen FAUX comme résultante de la fonction
PROC_ERR:
IsWorkbookOpen = False
Resume PROC_EXIT
End Function

bye
Stéphane
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
397
  • Question Question
XL 2019 User Form
Réponses
9
Affichages
357
  • Question Question
Microsoft 365 Excel et Insee
Réponses
6
Affichages
579
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
370
Réponses
7
Affichages
315
Réponses
4
Affichages
136
Réponses
3
Affichages
151
Retour