transformer un nom de fichier en variable
Le
Fred

Bonjour,
Débutant en VBS, j'exécute le script ci dessous:
' LECTURE COMPLETE DU FICHIER
Set Fsys = CreateObject("Scripting.FileSystemObject")
Set MonFic = Fsys.OpenTextFile("c:test.txt", 1)
'TEST DE L'EXISTENCE DU FICHIER
Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
If oFSO.FileExists("c:test.txt") = True Then
MsgBox "le fichier existe"
Else
MsgBox "le fichier n'existe pas"
End If
Je souhaite tester l'existence du fichier, mais à l'aide d'une variable.
J'ai essayé de faire :
If oFSO.FileExists(MonFIC) = True Then
Mais ça ne marche pas; pourriez-vous m'indiquer comment récupérer le nom du
fichier dans une variable afin de faire mon test ?
Merci.
FRED.
Débutant en VBS, j'exécute le script ci dessous:
' LECTURE COMPLETE DU FICHIER
Set Fsys = CreateObject("Scripting.FileSystemObject")
Set MonFic = Fsys.OpenTextFile("c:test.txt", 1)
'TEST DE L'EXISTENCE DU FICHIER
Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
If oFSO.FileExists("c:test.txt") = True Then
MsgBox "le fichier existe"
Else
MsgBox "le fichier n'existe pas"
End If
Je souhaite tester l'existence du fichier, mais à l'aide d'une variable.
J'ai essayé de faire :
If oFSO.FileExists(MonFIC) = True Then
Mais ça ne marche pas; pourriez-vous m'indiquer comment récupérer le nom du
fichier dans une variable afin de faire mon test ?
Merci.
FRED.
si tu utilises une variable au lieu d'un objet, cela fonctionnera beaucoup
mieux
Donc,
Monfic="C:test.Txt"
If oFSO.FileExists(MonFIC) = True Then ...
fonctionnera très bien!
Comme tu définis MonFic comme Objet (avec l'instruction "set Monfic=...."),
il y a erreur dans le script!
A bientôt,
--
Thierry DEMAN-BARCELÒ
Exchange MVP, MCSE2003+M,MCSE2003+S,MCDBA,MCITP dba&Dev
http://base.faqexchange.info http://www.faqexchange.info
http://ISAFirewalls.org
"Fred" news:%
strFichier = "c:test.txt"
'TEST DE L'EXISTENCE DU FICHIER
Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
If oFSO.FileExists(strFichier) = True Then
MsgBox "le fichier existe, on peut l'ouvrir"
Set MonFic = Fsys.OpenTextFile("c:test.txt", 1)
blah, blah..
MonFic.Close
Set MonFic = Nothing
Else
MsgBox "le fichier n'existe pas"
End If
Set oFSO = Nothing
Fred.
"jbongran" news:4797b8ea$0$13704$
Merci, cela fonctionne, mais...
Je rencontre les deux problèmes suivants:
1 - j'exécute ce script au sein d'un classeur Excel et souhaiterais
récupérer cette variable depuis le contenu d'une cellule:
Dim strFic As Range
Set strFichier = Range("A1")
Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
If oFSO.FileExists(strFichier) = True Then
etc...
Mais ça ne fonctionne pas, je n'arrive pas à récupérer ma variable...
2- Pour mon info, si j'exécute ce script en enregistrant un fichier txt et
lui positionnant l'extension .vbs, je vois passer une fenêtre dos très
rapidement mais rien d'autre...
Je me demande pourquoi....
Merci encore,
FRED.
"jbongran" news:4797b8ea$0$13704$
vérifie que ton fichier de script s'appelle bien "xxx.VBS" et non
"xxxx.VBS.txt"
=> Modifier l'affichage des dossiers pour avoir l'affichage des extensions.
Prends l'habitude de lancer tes scripts vbs par CSCRIPT xxxx.VBS, ou mieux,
positionnes CSCRIPT par défaut:
cscript //H:cscript
A+
--
Thierry DEMAN-BARCELÒ
Exchange MVP, MCSE2003+M,MCSE2003+S,MCDBA,MCITP dba&Dev
http://base.faqexchange.info http://www.faqexchange.info
http://ISAFirewalls.org
"Fred" news:
| A nouveau moi!
Bonsoir !
| Merci, cela fonctionne, mais...
| Je rencontre les deux problèmes suivants:
| 1 - j'exécute ce script au sein d'un classeur Excel et souhaiterais
| récupérer cette variable depuis le contenu d'une cellule:
Sub GetFileFromCell()
' création d'une instance fso
Set oFs = CreateObject("Scripting.FileSystemObject")
' lecture de la cellule A1 contenant le nom complet du fichier
' le nom complet du fichier sera présent dans la variable strFile
strFile = Worksheets("Feuil1").Range("A1")
' recherche la présence du fichier
If oFs.FileExists(strFile) Then MsgBox ("File exists !")
End Sub
| 2- Pour mon info, si j'exécute ce script en enregistrant un fichier
| txt et lui positionnant l'extension .vbs, je vois passer une fenêtre
| dos très rapidement mais rien d'autre...
| Je me demande pourquoi....
En complément de la réponse de Thierry :
- Ouvrez une invite de commandes cmd.exe
- Déplacez-vous dans le dossier de votre script
- Exécuter ensuite votre script via la commande suivante :
D:Test> cscript //nologo monscript.vbs
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Juste un détail : dans un range Excel, le contenu est normalement fourni
par la propriété .value :
Range("A1").value
@-salutations
Michel Claveau
Notre ami Méta-MCI (MVP) tapota :
C'est vrai mais value est la propriété par défaut
ça devrait marcher aussi ainsi
même si je désaprouve ce type de chose...
HB
Peut-être avec VBA ou VBS ; mais, avec Python, par exemple, il n'y a pas
de propriété par défaut. Son absence génère alors une erreur.
Mais, bon, vu que, là, je sors du cadre de la demande, je sors (bis)...
Michel Claveau
Je vous remercie, la récupération de la variable fonctionne maintenant.
Mais bon, comme je suis lancé dans les demandes, je tente le coup:
Dans mon code, j'arrive à lire le contenu du fichier, à aller chercher la
balise qui m'interresse ( 'RECHERCHE LIGNE REF DOS )
Mais ce que je souhaiterais faire, c'est remplacer son contenu
(<refdos>toto</refdos> par <refdos>TATA</refdos>) et là..... c'est la grosse
panique à bord !!
FRED.
Sub Extraire()
'
' Extraire Macro
' Macro enregistrée le 22/01/2008 par Fred
'
Range("B1").Select
ActiveCell.FormulaR1C1 = "=MID(RC[-1],18,6)"
Range("B1").Select
Selection.AutoFill Destination:=Range("B1:B1500"), Type:=xlFillDefault
Range("B1:B1500").Select
Columns("A:A").EntireColumn.AutoFit
Range("A1").Select
End Sub
Sub Lire()
'RECUPERATION VARIALBLE CELLULE EXCEL
Dim strFic As Range
Set Mon_Fic = Range("A1")
MsgBox Mon_Fic
'TEST DE L'EXISTENCE DU FICHIER
Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
If oFSO.FileExists(Mon_Fic) = True Then
MsgBox "le fichier existe"
Else
MsgBox "le fichier n'existe pas"
End If
' LECTURE COMPLETE DU FICHIER
Set Fsys = CreateObject("Scripting.FileSystemObject")
Set OFSO2 = Fsys.OpenTextFile(Mon_Fic, 1)
Contenu = OFSO2.Readall
msg = "Le fichier contient : " & Contenu
MsgBox (msg)
'RECHERCHE LIGNE REF DOS
Const ForReading = 1, ForWriting = 2
Dim OFSO3, MyFile2
Set OFSO3 = CreateObject("Scripting.FileSystemObject")
Set MyFile2 = OFSO3.OpenTextFile(Mon_Fic, ForReading)
' Tant que la fin du fichier n'est pas atteinte...
Do While Not MyFile2.AtEndOfStream
'...Lire chaque ligne
ReadLineTextFile = MyFile2.ReadLine
'Si la chaîne de caractère <refdos> est rouvée, alors l'inclure dans la
variable "ReadLineTextFile"
If InStr(ReadLineTextFile, "<refdos>") Then
MsgBox ReadLineTextFile
Else
End If
Loop
End Sub
"moi" news: