OVH Cloud OVH Cloud

Comment savoir si un fichier est ouvert

4 réponses
Avatar
Laurent Stern
Bonjour

Je souhaite tester si fichier est ouvert ou non pour mon application active
à partir de VB.

Par exemple, à partir d'une macro VB dans MSProject, j'ai besoin d'accéder à
une information dans les propriétés d'un fichier. Si le fichier n'est pas
ouvert ma commande ne me remonte rien. Donc avant d'exceter ma commande je
souhaite contrôler que le fichier est bien ouvert, sinon je peux l'ouvrir.

Merci

Laurent

4 réponses

Avatar
Roger Renaud
Deux facons de faire :

1. Utiliser la fonction DIR
2. Utiliser la classe FSO avec la méthode FileExists. Il faudra cependant
ajouter au projet la référence Microsoft Scripting Runtime.


Private Function FichierExiste(ByVal NomFichier As String) As Boolean

Dim fsoFichier As New FileSystemObject

'La méthode FileExists prend par défaut le répertoire courant

sinon inclure tout le chemin au paramètre

If fsoFichier.FileExists(NomFichier) Then

FichierExiste = True

Else

FichierExiste = False

End If

End Function



RR



"Laurent Stern" a écrit dans le message de
news:
Bonjour

Je souhaite tester si fichier est ouvert ou non pour mon application


active
à partir de VB.

Par exemple, à partir d'une macro VB dans MSProject, j'ai besoin d'accéder


à
une information dans les propriétés d'un fichier. Si le fichier n'est pas
ouvert ma commande ne me remonte rien. Donc avant d'exceter ma commande je
souhaite contrôler que le fichier est bien ouvert, sinon je peux l'ouvrir.

Merci

Laurent




Avatar
ng
Bonjour,

Le FSO est a bannir de vos applications VB6 :
http://faq.vb.free.fr/index.php?question6


Nicolas.
--
http://www.ngsoft-fr.com
"Roger Renaud" a écrit dans le message de news:
l3hJb.55400$
Deux facons de faire :

1. Utiliser la fonction DIR
2. Utiliser la classe FSO avec la méthode FileExists. Il faudra cependant
ajouter au projet la référence Microsoft Scripting Runtime.


Private Function FichierExiste(ByVal NomFichier As String) As Boolean

Dim fsoFichier As New FileSystemObject

'La méthode FileExists prend par défaut le répertoire courant

sinon inclure tout le chemin au paramètre

If fsoFichier.FileExists(NomFichier) Then

FichierExiste = True

Else

FichierExiste = False

End If

End Function



RR



"Laurent Stern" a écrit dans le message de
news:
> Bonjour
>
> Je souhaite tester si fichier est ouvert ou non pour mon application
active
> à partir de VB.
>
> Par exemple, à partir d'une macro VB dans MSProject, j'ai besoin


d'accéder
à
> une information dans les propriétés d'un fichier. Si le fichier n'est


pas
> ouvert ma commande ne me remonte rien. Donc avant d'exceter ma commande


je
> souhaite contrôler que le fichier est bien ouvert, sinon je peux


l'ouvrir.
>
> Merci
>
> Laurent
>
>




Avatar
ng
Salut,

Pour savoir si un fichier est ouvert, il suffirait de l'ouvrir et de catcher
l'erreur.

Voir Open dans l'aide VB6.

Nicolas.
--
http://www.ngsoft-fr.com
"Laurent Stern" a écrit dans le message de
news:
Bonjour

Je souhaite tester si fichier est ouvert ou non pour mon application


active
à partir de VB.

Par exemple, à partir d'une macro VB dans MSProject, j'ai besoin d'accéder


à
une information dans les propriétés d'un fichier. Si le fichier n'est pas
ouvert ma commande ne me remonte rien. Donc avant d'exceter ma commande je
souhaite contrôler que le fichier est bien ouvert, sinon je peux l'ouvrir.

Merci

Laurent




Avatar
Zoury
Salut Laurent! :O)

voici un exemple de la solution proposée par Nicolas.

'***
Option Explicit

Private Sub Main()
Debug.Print IsFileOpen("C:wks.xls")
End Sub

Private Function IsFileOpen(ByRef sFile As String) As Boolean

Dim hFile As Long

On Error GoTo ErrHandler

hFile = FreeFile
Open sFile For Input Lock Read As #hFile
Close #hFile

Exit Function

ErrHandler:
IsFileOpen = (Err.Number = 70) ' Permission denied
End Function
'***

Le problème c'est que cette solution ne fonctionne pas avec tout les types
d'extension, car selon le type d'extension et le logiciel qui les exploite,
il est possible qu'il soit impossible de détecté si un fichier est ouvert ou
pas..

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous

"Laurent Stern" wrote in message
news:
Bonjour

Je souhaite tester si fichier est ouvert ou non pour mon application


active
à partir de VB.

Par exemple, à partir d'une macro VB dans MSProject, j'ai besoin d'accéder


à
une information dans les propriétés d'un fichier. Si le fichier n'est pas
ouvert ma commande ne me remonte rien. Donc avant d'exceter ma commande je
souhaite contrôler que le fichier est bien ouvert, sinon je peux l'ouvrir.

Merci

Laurent