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
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" <h...@anti.spam.fr> a écrit dans le message de groupe de discussion : i2ormn$1vrt$1...@saria.nerim.net...
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
| 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" <h...@anti.spam.fr> a écrit dans le message de groupe de discussion : i395s2$2h9q$1...@saria.nerim.net...
est-ce possible d'avoir les commentaires sur ce code svp
Je ne suis pas novice mais ne maitrise pas la fonction getobject et les "$" dans le code.
Mon probl?me repose essentiellement sur le fait que je ne vois pas comment modifier le lien vers le repertoire dans cette ligne de commande : GetObject("WinNT://Nom du domaine/Nom du serveur/LanmanServer")
si on veut faire le test dans P\toto par exemple... je met GetObject("P\toto") et ca ne marche pas. Le msgbox s'affiche bien mais rien ne se passe
merci d'avance
> On Wednesday, July 28, 2010 5:02 AM HD wrote:
> 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
>> On Wednesday, July 28, 2010 6:36 AM michdenis wrote:
>> 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
>> --
>> MichD
>> --------------------------------------------
>>
>>
>> "HD" <h...@anti.spam.fr> a ?crit dans le message de groupe de discussion : i2ormn$1vrt$1...@saria.nerim.net...
>> 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
>>> On Tuesday, August 03, 2010 9:33 AM HD wrote:
>>> 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
>>>> On Tuesday, August 03, 2010 10:53 AM michdenis wrote:
>>>> 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" <h...@anti.spam.fr> a ?crit dans le message de groupe de discussion : i395s2$2h9q$1...@saria.nerim.net...
>>>> 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
>>>> Submitted via EggHeadCafe - Software Developer Portal of Choice
>>>> MongoDb vs SQL Server Basic Speed Tests
>>>> http://www.eggheadcafe.com/tutorials/aspnet/6f573869-c8eb-40c3-9946-2f61e0163966/mongodb-vs-sql-server-basic-speed-tests.aspx
Il te faut un Nom de domaine... Si ton réseau est en groupe de travail cela
ne devrait pas pouvoir fonctionner...
--
@+
HD