[VBA] Savoir par qui un fichier Excel est déjà utilisé

Le
HD
Bonjour,

Lorsque l'on ouvre manuellement un classeur Excel situé sur le réseau, si
celui ci est déjà utilisé par quelqu'un le nom de l'utilisateur Excel nous
apparaît. Lorsqu'en VBA j'ouvre un classeur Excel, si celui est déjà ouvert
par quelqu'un d'autre et est donc en lecture seule, je voudrais pouvoir
savoir quels sont les utilisateurs qui ont ouverts le fichier en question.

Les classeurs en question ne sont pas des classeurs partagés.

Merci d'avance pour votre aide.
--
@+
HD
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #22410301
Bonjour,

Cette macro fut publiée sur MPFE par Michel Perron.
'---------------------------------------
Sub WhoHasFileOpen()
Dim File As String
File = InputBox("Enter any part of Filename")
If File = "" Then Exit Sub
If Any_Part_Of_Filename = "" Then Exit Sub
Workbooks.Add
Rows(1).Font.Bold = True
Cells(1, 1) = "USER"
Cells(1, 2) = "PATH"
On Error Resume Next
Dim fso As Object, Res As Object, i&: i = 1
Set fso = GetObject("WinNT://<servername>/LanmanServer")
If IsEmpty(fso) Then Exit Sub
For Each Res In fso.resources
If Not Res.user = "" And Not Right(Res.user, 1) = "$" Then
If InStr(1, Res.Path, File, 1) Then
i = i + 1
Cells(i, 1) = Res.user
Cells(i, 2) = Res.Path
End If
End If
Next Res
Cells.Columns.AutoFit
MsgBox "Done !", 64
End Sub
'---------------------------------------

Pour la ligne de code suivante : Exemple.
Comme ceci :
Set fso = GetObject("WinNT://Nom du domaine/Nom du serveur/LanmanServer")

Exemple :
Set fso = GetObject("WinNT://Trucmuch/Serveur01/LanmanServer")

--
MichD
--------------------------------------------


"HD" Bonjour,

Lorsque l'on ouvre manuellement un classeur Excel situé sur le réseau, si
celui ci est déjà utilisé par quelqu'un le nom de l'utilisateur Excel nous
apparaît. Lorsqu'en VBA j'ouvre un classeur Excel, si celui est déjà ouvert
par quelqu'un d'autre et est donc en lecture seule, je voudrais pouvoir
savoir quels sont les utilisateurs qui ont ouverts le fichier en question.

Les classeurs en question ne sont pas des classeurs partagés.

Merci d'avance pour votre aide.
--
@+
HD
HD
Le #22437761
Un grand MERCI à toi MichDenis !!! ça fonctionne très bien.

Par contre, la ligne:
If Any_Part_Of_Filename = "" Then Exit Sub
ne sert à rien.

A un moment donné, je m'étais trompé dans la ligne de commande
//Domaine/NomduServer/LanmanServer ce qui faisait qu'ensuite cela ne
fonctionnait plus... il m'a fallut sortir du classeur puis revenir dedans.
Je pense qu'une ligne finale avec: Set FSO = NoThing empécherait
d'avoir un tel souci.

--
@+
HD
michdenis
Le #22438021
Merci du retour.

| If Any_Part_Of_Filename = "" Then Exit Sub
| ne sert à rien.

C'est ce que je pensais.. ;- ) mais comme ce n'est pas moi qui
ai créé cette procédure, je n'ai pas voulu la modifier.

Pour le reste, comme je ne travaille pas en réseau, je n'ai
pas le moyen de tester ce type de procédure.

--
MichD
--------------------------------------------


"HD" Un grand MERCI à toi MichDenis !!! ça fonctionne très bien.

Par contre, la ligne:
If Any_Part_Of_Filename = "" Then Exit Sub
ne sert à rien.

A un moment donné, je m'étais trompé dans la ligne de commande
//Domaine/NomduServer/LanmanServer ce qui faisait qu'ensuite cela ne
fonctionnait plus... il m'a fallut sortir du classeur puis revenir dedans.
Je pense qu'une ligne finale avec: Set FSO = NoThing empécherait
d'avoir un tel souci.

--
@+
HD
Publicité
Poster une réponse
Anonyme