l'instruction FileCopy génère une erreur quand le fichier mis en source
est ouvert.
J'ai essayé de la remplacer par la méthode Copy, en écrivant ceci :
Dim fs
'...
Set fs = CreateObject("Scripting.FileSystemObject")
fs.Copy gCheminBase & LibraryDirectory & AncienNomFichier, gCheminBase &
LibraryDirectory & FileInLibraryName
Set fs = Nothing
J'ai une erreur 438 : "l'objet ne gère pas cette propriété ou cette
méthode" en retour. Pas cool.
Peut-on m'indiquer mon erreur ? Je ne vois pas...
Merci d'avance,
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zoury
Salut Via!
: J'ai essayé de la remplacer par la méthode Copy <snip> : J'ai une erreur 438 : "l'objet ne gère pas cette propriété ou cette : méthode" en retour. Pas cool. <resnip> : Peut-on m'indiquer mon erreur ? Je ne vois pas...
la méthode Copy n'existe tous simplement pas. ;O)
la méthode fournit par le FSO est CopyFile... mais je doute que cela fonctionne plus.. si le fichier est ouvert tu auras une erreur. A moins, je crois, qu'il soit ouvert avec un partage quelconque qui permette l'ouverture "multiples" de ce dernier...
une solution acceptable serait alors d'avertir l'utilisateur que le fichier est présentement ouvert et qu'il doit le fermer (cette n'est peut-être pas applicable... je ne connais pas du tout les détails de ton appli ;O))
: J'ai essayé de la remplacer par la méthode Copy
<snip>
: J'ai une erreur 438 : "l'objet ne gère pas cette propriété ou cette
: méthode" en retour. Pas cool.
<resnip>
: Peut-on m'indiquer mon erreur ? Je ne vois pas...
la méthode Copy n'existe tous simplement pas. ;O)
la méthode fournit par le FSO est CopyFile... mais je doute que cela fonctionne
plus.. si le fichier est ouvert tu auras une erreur. A moins, je crois, qu'il
soit ouvert avec un partage quelconque qui permette l'ouverture "multiples" de
ce dernier...
une solution acceptable serait alors d'avertir l'utilisateur que le fichier est
présentement ouvert et qu'il doit le fermer (cette n'est peut-être pas
applicable... je ne connais pas du tout les détails de ton appli ;O))
: J'ai essayé de la remplacer par la méthode Copy <snip> : J'ai une erreur 438 : "l'objet ne gère pas cette propriété ou cette : méthode" en retour. Pas cool. <resnip> : Peut-on m'indiquer mon erreur ? Je ne vois pas...
la méthode Copy n'existe tous simplement pas. ;O)
la méthode fournit par le FSO est CopyFile... mais je doute que cela fonctionne plus.. si le fichier est ouvert tu auras une erreur. A moins, je crois, qu'il soit ouvert avec un partage quelconque qui permette l'ouverture "multiples" de ce dernier...
une solution acceptable serait alors d'avertir l'utilisateur que le fichier est présentement ouvert et qu'il doit le fermer (cette n'est peut-être pas applicable... je ne connais pas du tout les détails de ton appli ;O))
Ce serait pas plutôt CopyFile au lieu de FileCopy ? Normalement ça doit marcher...
La méthode Copy c'est normal qu'elle ne marche pas dans ton code. Tu devrais avoir un truc du genre : ... Set fs = CreateObject("Scripting.FileSystemObject") Set InputFile = fs.GetFile ("C:SOURCE.XXX") InputFile.Copy ("C:TARGET") ...
bàt.
"Via" a écrit dans le message de news:
Bonsoir à tous,
l'instruction FileCopy génère une erreur quand le fichier mis en source est ouvert. J'ai essayé de la remplacer par la méthode Copy, en écrivant ceci :
Dim fs '... Set fs = CreateObject("Scripting.FileSystemObject") fs.Copy gCheminBase & LibraryDirectory & AncienNomFichier, gCheminBase & LibraryDirectory & FileInLibraryName Set fs = Nothing
J'ai une erreur 438 : "l'objet ne gère pas cette propriété ou cette méthode" en retour. Pas cool. Peut-on m'indiquer mon erreur ? Je ne vois pas... Merci d'avance,
Via :)
Ce serait pas plutôt CopyFile au lieu de FileCopy ? Normalement ça doit
marcher...
La méthode Copy c'est normal qu'elle ne marche pas dans ton code. Tu devrais
avoir un truc du genre :
...
Set fs = CreateObject("Scripting.FileSystemObject")
Set InputFile = fs.GetFile ("C:SOURCE.XXX")
InputFile.Copy ("C:TARGET")
...
bàt.
"Via" <chew.baka@caramail.com> a écrit dans le message de
news:OLz5yNKQDHA.1552@TK2MSFTNGP10.phx.gbl...
Bonsoir à tous,
l'instruction FileCopy génère une erreur quand le fichier mis en source
est ouvert.
J'ai essayé de la remplacer par la méthode Copy, en écrivant ceci :
Dim fs
'...
Set fs = CreateObject("Scripting.FileSystemObject")
fs.Copy gCheminBase & LibraryDirectory & AncienNomFichier, gCheminBase &
LibraryDirectory & FileInLibraryName
Set fs = Nothing
J'ai une erreur 438 : "l'objet ne gère pas cette propriété ou cette
méthode" en retour. Pas cool.
Peut-on m'indiquer mon erreur ? Je ne vois pas...
Merci d'avance,
Ce serait pas plutôt CopyFile au lieu de FileCopy ? Normalement ça doit marcher...
La méthode Copy c'est normal qu'elle ne marche pas dans ton code. Tu devrais avoir un truc du genre : ... Set fs = CreateObject("Scripting.FileSystemObject") Set InputFile = fs.GetFile ("C:SOURCE.XXX") InputFile.Copy ("C:TARGET") ...
bàt.
"Via" a écrit dans le message de news:
Bonsoir à tous,
l'instruction FileCopy génère une erreur quand le fichier mis en source est ouvert. J'ai essayé de la remplacer par la méthode Copy, en écrivant ceci :
Dim fs '... Set fs = CreateObject("Scripting.FileSystemObject") fs.Copy gCheminBase & LibraryDirectory & AncienNomFichier, gCheminBase & LibraryDirectory & FileInLibraryName Set fs = Nothing
J'ai une erreur 438 : "l'objet ne gère pas cette propriété ou cette méthode" en retour. Pas cool. Peut-on m'indiquer mon erreur ? Je ne vois pas... Merci d'avance,
Via :)
Via
Salut Zoury :)
Je ne l'ai pas inventé : je copie-colle de la MSDN :
Copy, méthode Description
Copie un fichier ou un dossier spécifié d'un emplacement vers un autre.
Syntaxe
object.Copy destination[, overwrite]
La syntaxe de la méthode Copy comprend les éléments suivants :
Élément Description object Correspond toujours au nom d'un objet File ou Folder. destination Destination de la copie du fichier ou du dossier. Les caractères génériques ne sont pas autorisés. overwrite Facultatif. Valeur booléenne True (par défaut) si les fichiers ou dossiers existants sont remplacés ; False s'ils ne le sont pas.
Remarques
Le résultat de la méthode Copy sur un objet File ou Folder est identique à celui de FileSystemObject.CopyFile ou FileSystemObject.CopyFolder où le fichier ou le dossier référencé par object est passé en argument. Notez cependant que ces méthodes alternatives sont capables de copier plusieurs fichiers ou dossiers.
Je vais essayer les autres mais effectivement ça m'étonnerait que ça ne provoque pas d'erreur si le fichier est ouvert... c'est juste par acquis de conscience :) J'ai déjà un avertissement pour mon utilisateur sur mon appli... mais ce n'est pas pratique parce que ce sont des fichiers en réseau, donc ça peut parfaitement être un autre utilisateur qui ouvre ce fichier... y a-t-il un moyen de savoir lequel ? Voire de forcer la fermeture du fichier ??? Merci d'avance,
Via :)
"Zoury" a écrit dans le message de news:
Salut Via!
: J'ai essayé de la remplacer par la méthode Copy <snip> : J'ai une erreur 438 : "l'objet ne gère pas cette propriété ou cette : méthode" en retour. Pas cool. <resnip> : Peut-on m'indiquer mon erreur ? Je ne vois pas...
la méthode Copy n'existe tous simplement pas. ;O)
la méthode fournit par le FSO est CopyFile... mais je doute que cela
fonctionne
plus.. si le fichier est ouvert tu auras une erreur. A moins, je crois,
qu'il
soit ouvert avec un partage quelconque qui permette l'ouverture
"multiples" de
ce dernier...
une solution acceptable serait alors d'avertir l'utilisateur que le
fichier est
présentement ouvert et qu'il doit le fermer (cette n'est peut-être pas applicable... je ne connais pas du tout les détails de ton appli ;O))
Je ne l'ai pas inventé : je copie-colle de la MSDN :
Copy, méthode
Description
Copie un fichier ou un dossier spécifié d'un emplacement vers un autre.
Syntaxe
object.Copy destination[, overwrite]
La syntaxe de la méthode Copy comprend les éléments suivants :
Élément Description
object Correspond toujours au nom d'un objet File ou Folder.
destination Destination de la copie du fichier ou du dossier. Les
caractères génériques ne sont pas autorisés.
overwrite Facultatif. Valeur booléenne True (par défaut) si les
fichiers ou dossiers existants sont remplacés ; False s'ils ne le sont pas.
Remarques
Le résultat de la méthode Copy sur un objet File ou Folder est identique à
celui de FileSystemObject.CopyFile ou FileSystemObject.CopyFolder où le
fichier ou le dossier référencé par object est passé en argument. Notez
cependant que ces méthodes alternatives sont capables de copier plusieurs
fichiers ou dossiers.
Je vais essayer les autres mais effectivement ça m'étonnerait que ça ne
provoque pas d'erreur si le fichier est ouvert... c'est juste par acquis de
conscience :)
J'ai déjà un avertissement pour mon utilisateur sur mon appli... mais ce
n'est pas pratique parce que ce sont des fichiers en réseau, donc ça peut
parfaitement être un autre utilisateur qui ouvre ce fichier... y a-t-il un
moyen de savoir lequel ? Voire de forcer la fermeture du fichier ???
Merci d'avance,
Via :)
"Zoury" <yanick_lefebvre@hotmail.com> a écrit dans le message de news:
Ok63swMQDHA.1624@tk2msftngp13.phx.gbl...
Salut Via!
: J'ai essayé de la remplacer par la méthode Copy
<snip>
: J'ai une erreur 438 : "l'objet ne gère pas cette propriété ou cette
: méthode" en retour. Pas cool.
<resnip>
: Peut-on m'indiquer mon erreur ? Je ne vois pas...
la méthode Copy n'existe tous simplement pas. ;O)
la méthode fournit par le FSO est CopyFile... mais je doute que cela
fonctionne
plus.. si le fichier est ouvert tu auras une erreur. A moins, je crois,
qu'il
soit ouvert avec un partage quelconque qui permette l'ouverture
"multiples" de
ce dernier...
une solution acceptable serait alors d'avertir l'utilisateur que le
fichier est
présentement ouvert et qu'il doit le fermer (cette n'est peut-être pas
applicable... je ne connais pas du tout les détails de ton appli ;O))
Je ne l'ai pas inventé : je copie-colle de la MSDN :
Copy, méthode Description
Copie un fichier ou un dossier spécifié d'un emplacement vers un autre.
Syntaxe
object.Copy destination[, overwrite]
La syntaxe de la méthode Copy comprend les éléments suivants :
Élément Description object Correspond toujours au nom d'un objet File ou Folder. destination Destination de la copie du fichier ou du dossier. Les caractères génériques ne sont pas autorisés. overwrite Facultatif. Valeur booléenne True (par défaut) si les fichiers ou dossiers existants sont remplacés ; False s'ils ne le sont pas.
Remarques
Le résultat de la méthode Copy sur un objet File ou Folder est identique à celui de FileSystemObject.CopyFile ou FileSystemObject.CopyFolder où le fichier ou le dossier référencé par object est passé en argument. Notez cependant que ces méthodes alternatives sont capables de copier plusieurs fichiers ou dossiers.
Je vais essayer les autres mais effectivement ça m'étonnerait que ça ne provoque pas d'erreur si le fichier est ouvert... c'est juste par acquis de conscience :) J'ai déjà un avertissement pour mon utilisateur sur mon appli... mais ce n'est pas pratique parce que ce sont des fichiers en réseau, donc ça peut parfaitement être un autre utilisateur qui ouvre ce fichier... y a-t-il un moyen de savoir lequel ? Voire de forcer la fermeture du fichier ??? Merci d'avance,
Via :)
"Zoury" a écrit dans le message de news:
Salut Via!
: J'ai essayé de la remplacer par la méthode Copy <snip> : J'ai une erreur 438 : "l'objet ne gère pas cette propriété ou cette : méthode" en retour. Pas cool. <resnip> : Peut-on m'indiquer mon erreur ? Je ne vois pas...
la méthode Copy n'existe tous simplement pas. ;O)
la méthode fournit par le FSO est CopyFile... mais je doute que cela
fonctionne
plus.. si le fichier est ouvert tu auras une erreur. A moins, je crois,
qu'il
soit ouvert avec un partage quelconque qui permette l'ouverture
"multiples" de
ce dernier...
une solution acceptable serait alors d'avertir l'utilisateur que le
fichier est
présentement ouvert et qu'il doit le fermer (cette n'est peut-être pas applicable... je ne connais pas du tout les détails de ton appli ;O))
: object Correspond toujours au nom d'un objet File ou Folder.
aaaaaahhh!! Dans ton exemple de code, tu utilises la métode Copy sur un objet FileSystemObject et non sur un objet File ou Folder...
: J'ai déjà un avertissement pour mon utilisateur sur mon appli... mais ce : n'est pas pratique parce que ce sont des fichiers en réseau, donc ça peut : parfaitement être un autre utilisateur qui ouvre ce fichier...
Quels sont les fichiers? sont-ils ouvert par ton logiciel? Il y a peut-être une façon de forcer le fichier à s'ouvrir avec un partage.
: y a-t-il un moyen de savoir lequel ?
Yep. regarde cette article de Randy, je crois que c'est son addition la plus récente ;O) :
Obtaining Open File Information from Another Machine http://www.mvps.org/vbnet/code/network/netfileenum.htm
: Voire de forcer la fermeture du fichier ???
C'est possible... si ça existe (ce qui m'étonnerais mais sait-on jamais..) il faudrait *vraiment* s'assurer que l'utilisateur ne perde pas le travaille qu'il est en train d'effectuer........... De plus ce serait agaçant à mon avis..
: object Correspond toujours au nom d'un objet File ou Folder.
aaaaaahhh!! Dans ton exemple de code, tu utilises la métode Copy sur un objet
FileSystemObject et non sur un objet File ou Folder...
: J'ai déjà un avertissement pour mon utilisateur sur mon appli... mais ce
: n'est pas pratique parce que ce sont des fichiers en réseau, donc ça peut
: parfaitement être un autre utilisateur qui ouvre ce fichier...
Quels sont les fichiers? sont-ils ouvert par ton logiciel? Il y a peut-être une
façon de forcer le fichier à s'ouvrir avec un partage.
: y a-t-il un moyen de savoir lequel ?
Yep. regarde cette article de Randy, je crois que c'est son addition la plus
récente ;O) :
Obtaining Open File Information from Another Machine
http://www.mvps.org/vbnet/code/network/netfileenum.htm
: Voire de forcer la fermeture du fichier ???
C'est possible... si ça existe (ce qui m'étonnerais mais sait-on jamais..) il
faudrait *vraiment* s'assurer que l'utilisateur ne perde pas le travaille qu'il
est en train d'effectuer........... De plus ce serait agaçant à mon avis..
: object Correspond toujours au nom d'un objet File ou Folder.
aaaaaahhh!! Dans ton exemple de code, tu utilises la métode Copy sur un objet FileSystemObject et non sur un objet File ou Folder...
: J'ai déjà un avertissement pour mon utilisateur sur mon appli... mais ce : n'est pas pratique parce que ce sont des fichiers en réseau, donc ça peut : parfaitement être un autre utilisateur qui ouvre ce fichier...
Quels sont les fichiers? sont-ils ouvert par ton logiciel? Il y a peut-être une façon de forcer le fichier à s'ouvrir avec un partage.
: y a-t-il un moyen de savoir lequel ?
Yep. regarde cette article de Randy, je crois que c'est son addition la plus récente ;O) :
Obtaining Open File Information from Another Machine http://www.mvps.org/vbnet/code/network/netfileenum.htm
: Voire de forcer la fermeture du fichier ???
C'est possible... si ça existe (ce qui m'étonnerais mais sait-on jamais..) il faudrait *vraiment* s'assurer que l'utilisateur ne perde pas le travaille qu'il est en train d'effectuer........... De plus ce serait agaçant à mon avis..
: J'ai déjà un avertissement pour mon utilisateur sur mon appli... mais
ce
: n'est pas pratique parce que ce sont des fichiers en réseau, donc ça
peut
: parfaitement être un autre utilisateur qui ouvre ce fichier...
Quels sont les fichiers? sont-ils ouvert par ton logiciel? Il y a
peut-être une
façon de forcer le fichier à s'ouvrir avec un partage.
Non, ouverts par Word ou par Acrobat Reader, mais par l'intermédiaire d'un ShellExecute de mon programme... si on peut l'ouvrir en partage, je veux bien, mais ça me paraît difficile si c'est un .doc qu'un autre utilisateur veut modifier. Mais je suis preneur si ça existe :)
: y a-t-il un moyen de savoir lequel ?
Yep. regarde cette article de Randy, je crois que c'est son addition la
plus
récente ;O) :
Obtaining Open File Information from Another Machine http://www.mvps.org/vbnet/code/network/netfileenum.htm
Sympathique, je vais me pencher là-dessus.
: Voire de forcer la fermeture du fichier ???
C'est possible... si ça existe (ce qui m'étonnerais mais sait-on jamais..)
il
faudrait *vraiment* s'assurer que l'utilisateur ne perde pas le travaille
qu'il
est en train d'effectuer........... De plus ce serait agaçant à mon avis..
Effectivement... au pire je me démerderai autrement :) Merci,
Via :)
> aaaaaahhh!! Dans ton exemple de code, tu utilises la métode Copy sur un
objet
FileSystemObject et non sur un objet File ou Folder...
: J'ai déjà un avertissement pour mon utilisateur sur mon appli... mais
ce
: n'est pas pratique parce que ce sont des fichiers en réseau, donc ça
peut
: parfaitement être un autre utilisateur qui ouvre ce fichier...
Quels sont les fichiers? sont-ils ouvert par ton logiciel? Il y a
peut-être une
façon de forcer le fichier à s'ouvrir avec un partage.
Non, ouverts par Word ou par Acrobat Reader, mais par l'intermédiaire d'un
ShellExecute de mon programme... si on peut l'ouvrir en partage, je veux
bien, mais ça me paraît difficile si c'est un .doc qu'un autre utilisateur
veut modifier. Mais je suis preneur si ça existe :)
: y a-t-il un moyen de savoir lequel ?
Yep. regarde cette article de Randy, je crois que c'est son addition la
plus
récente ;O) :
Obtaining Open File Information from Another Machine
http://www.mvps.org/vbnet/code/network/netfileenum.htm
Sympathique, je vais me pencher là-dessus.
: Voire de forcer la fermeture du fichier ???
C'est possible... si ça existe (ce qui m'étonnerais mais sait-on jamais..)
il
faudrait *vraiment* s'assurer que l'utilisateur ne perde pas le travaille
qu'il
est en train d'effectuer........... De plus ce serait agaçant à mon avis..
Effectivement... au pire je me démerderai autrement :)
Merci,
: J'ai déjà un avertissement pour mon utilisateur sur mon appli... mais
ce
: n'est pas pratique parce que ce sont des fichiers en réseau, donc ça
peut
: parfaitement être un autre utilisateur qui ouvre ce fichier...
Quels sont les fichiers? sont-ils ouvert par ton logiciel? Il y a
peut-être une
façon de forcer le fichier à s'ouvrir avec un partage.
Non, ouverts par Word ou par Acrobat Reader, mais par l'intermédiaire d'un ShellExecute de mon programme... si on peut l'ouvrir en partage, je veux bien, mais ça me paraît difficile si c'est un .doc qu'un autre utilisateur veut modifier. Mais je suis preneur si ça existe :)
: y a-t-il un moyen de savoir lequel ?
Yep. regarde cette article de Randy, je crois que c'est son addition la
plus
récente ;O) :
Obtaining Open File Information from Another Machine http://www.mvps.org/vbnet/code/network/netfileenum.htm
Sympathique, je vais me pencher là-dessus.
: Voire de forcer la fermeture du fichier ???
C'est possible... si ça existe (ce qui m'étonnerais mais sait-on jamais..)
il
faudrait *vraiment* s'assurer que l'utilisateur ne perde pas le travaille
qu'il
est en train d'effectuer........... De plus ce serait agaçant à mon avis..
Effectivement... au pire je me démerderai autrement :) Merci,
Via :)
Zoury
: > aaaaaahhh!! Dans ton exemple de code, tu utilises la métode Copy sur un objet : > FileSystemObject et non sur un objet File ou Folder... <snip> : Ca me paraissait clair :)
Oui .. mais tu ne sembles pas comprendre ce que je t'ai expliqué.. tu obtiens une erreur 438 : "l'objet ne gère pas cette propriété ou cette méthode". Cette erreur vient du fait que tu n'utilises pas le bon objet pour appeler la méthode Copy. Il faudrait plutôt quelque chose comme ceci :
<non testé> '*** Call CreateObject("Scripting.FileSystemObject").GetFile("c:file.txt").Copy(gCheminBa se & LibraryDirectory & FileInLibraryName, True) ' Écrase le fichier s'il existe déjà '*** </non testé>
mais il me semble que le FSO ne gère les pas les fichiers binaires.. tu auras peut-être des problèmes pour copier des fichiers .doc et .pdf.
aussi j'vais chercher voir si c'est possible d'ouvrir un fichier par ShellExecute avec un accès partagé. ;O)
: > aaaaaahhh!! Dans ton exemple de code, tu utilises la métode Copy sur un
objet
: > FileSystemObject et non sur un objet File ou Folder...
<snip>
: Ca me paraissait clair :)
Oui .. mais tu ne sembles pas comprendre ce que je t'ai expliqué.. tu obtiens
une erreur 438 : "l'objet ne gère pas cette propriété ou cette méthode". Cette
erreur vient du fait que tu n'utilises pas le bon objet pour appeler la méthode
Copy. Il faudrait plutôt quelque chose comme ceci :
<non testé>
'***
Call
CreateObject("Scripting.FileSystemObject").GetFile("c:file.txt").Copy(gCheminBa
se & LibraryDirectory & FileInLibraryName, True) ' Écrase le fichier s'il existe
déjà
'***
</non testé>
mais il me semble que le FSO ne gère les pas les fichiers binaires.. tu auras
peut-être des problèmes pour copier des fichiers .doc et .pdf.
aussi j'vais chercher voir si c'est possible d'ouvrir un fichier par
ShellExecute avec un accès partagé. ;O)
: > aaaaaahhh!! Dans ton exemple de code, tu utilises la métode Copy sur un objet : > FileSystemObject et non sur un objet File ou Folder... <snip> : Ca me paraissait clair :)
Oui .. mais tu ne sembles pas comprendre ce que je t'ai expliqué.. tu obtiens une erreur 438 : "l'objet ne gère pas cette propriété ou cette méthode". Cette erreur vient du fait que tu n'utilises pas le bon objet pour appeler la méthode Copy. Il faudrait plutôt quelque chose comme ceci :
<non testé> '*** Call CreateObject("Scripting.FileSystemObject").GetFile("c:file.txt").Copy(gCheminBa se & LibraryDirectory & FileInLibraryName, True) ' Écrase le fichier s'il existe déjà '*** </non testé>
mais il me semble que le FSO ne gère les pas les fichiers binaires.. tu auras peut-être des problèmes pour copier des fichiers .doc et .pdf.
aussi j'vais chercher voir si c'est possible d'ouvrir un fichier par ShellExecute avec un accès partagé. ;O)