[VBS] Script pour récupérer l'adresse complète d'un fichier

Résolu
Amanck Messages postés 4 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 16 novembre 2006 - 13 nov. 2006 à 14:36
Amanck Messages postés 4 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 16 novembre 2006 - 16 nov. 2006 à 09:39
Bonjour,

Je débute en VB et je dois écrire un script VBS pour compléter un programme de pilotage d'automate. Je vais essayer d'être le plus clair possible :
Le programme de l'automate fait appel à une liste de travail (fichier texte avec une extension *.gwl) qui se trouve par exemple dans un dossier "Worklist", sur le bureau.
Je peux entrer le nom et le chemin du fichier .gwl par défault dans le programme, mais dans ce cas, il faut à chaque lancement du programme nommer la liste de travail avec le même nom et la placer au même endroit.
Pour plus de "convivialité", je veux mettre l'adresse et le nom du fichier en variables (mon problème ne se situe pas là). Pour ce faire, j'inserre une ligne de commande qui lance un script VBS (fichier au format *.vbs).
C'est là que je coince : je veux qu'au lancement de ce script s'affiche une boîte de dialogue contenant un bouton "Parcourir" qui permette d'ouvrir un "openfiledialog" afin de récupérer le nom du fichier (et le chemin).
J'ai installé Visual Basic 2005 Express Edition, j'ai "dessiné" mon formulaire, inséré le code (par encore au point en ce qui concerne l'openfiledialog), mais je ne sais pas comment enregistrer tout ça en fichier .vbs. Est-ce possible ? Comment faire ?
Sinon, j'ai la possibilité de lancer un .exe. Comment est-ce que je peux transformer mon projet en *.exe ?

Merci de votre attention et pour vos réponses,

Cordialement,

Amanck

6 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 26
13 nov. 2006 à 16:29
 Bonjour à tous....

Le CommonDialog existe aussi en vbs.
 Il y a plein de variantes possibles.

Ex:
Dim var1, var2, var3
var1 = "D:\Test1"  'disque ou disque/répertoire pour se positionner
var2 = "commentaire de la fenêtre"
var3 = "|*.vbs|"   'tous les fichiers .xls (ou *.txt ou *.*)





MsgBox BrowseForFile(var1, var2 & var3)
' pstrPath = var1 le chemin
' pstrFilter = var2 soit le type de fichiers recherché



Function BrowseForFile(pstrPath, pstrFilter)
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = pstrFilter
objDialog.InitialDir = pstrPath
objDialog.Flags = &H80000 + &H4 + &H8   'position de la fenêtre
intResult = objDialog.ShowOpen         
BrowseForFile = objDialog.FileName 'récupération du nom du fichier sélectionné
Set objDialog = Nothing
end function


jean-marc
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 26
15 nov. 2006 à 12:22
 Bonjour à tous....

Bonjour  ,

J'avais bien précisé qu'il y a plusieurs variantes !!!
Il suffit de demander.......

'Ce script permet d'ouvrir une fenêtre Explorer
'et affiche le nom du fichier selectionné par l'utilisateur
Dim WshShell, objDlg
Set WshShell = wscript.CreateObject("wscript.Shell")
Set objDlg = wscript.CreateObject("MSComDlg.CommonDialog")



'choix de l'affichage, l'option Filter peut-être est mise en commentaire (' ou rem)
objDlg.Filter = "All Files (*.*)|*.*|coucou Files (*.txt)|*.txt|jean-marc"
' objDlg.Filter = "All Files (*.*)|*.*|coucou Files (*.txt)|*.txt|jean-marc"



'Positionnement de la fenêtre
objDlg.FilterIndex = 2
objDlg.MaxFileSize = 260
objDlg.CancelError = true
objDlg.ShowOpen



MsgBox "Répertoire et Fichier: " & objDlg.FileName &vbCrLf&_
       "Fichier: " & Mid(objDlg.FileName, InStrRev(objDlg.FileName, "") + 1)



Set WshShell = Nothing
Set objDlg = Nothing
Set fso = Nothing




jean-marc
3
Amanck Messages postés 4 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 16 novembre 2006
13 nov. 2006 à 17:00
Merci Jean-Marc.

Cela fait plusieurs jours que je cherche des bouts de codes partout pour voir comment écrire mon code.
C'est exactement ce que je cherchais à faire. Il me reste maintenant à comprendre chaque ligne pour éviter de reposer la même question dans 6 mois ...

Merci encore

Amanck
0
Amanck Messages postés 4 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 16 novembre 2006
15 nov. 2006 à 11:25
Bonjour,

Je reviens à la charge ...

J'ai recopié le code, fait des tests en changeant des bouts de code pour voir ce que cela produit (c'est en général comme ça et par des recherches sur le net que j'apprends à programmer...). J'ai donc fait d'autres recherches sur le net et j'ai une nouvelle question au sujets du code :

"objDialog.Flags = &H80000 + &H4 + &H8   'position de la fenêtre"
comme le dit le commentaire, cette ligne permet de positionner la fenêtre. J'ai vu par ailleurs le code suivant : "objDialog.Flags = &h1a04" qui permet d'ouvrir la fenêtre de recherche en mode "multi-sélection". Le premier code ne correspondrait-il pas à de la sélection simple ? Quand j'essaye de modifier les valeurs &H..., la fenêtre reste toujours à la même place (en haut à gauche de l'écran).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 26
15 nov. 2006 à 12:24
 Re,

le "set fso = nothing" est de trop....copier/coller.....

jean-marc
0
Amanck Messages postés 4 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 16 novembre 2006
16 nov. 2006 à 09:39
Merci pour ces précisions.

Amanck
0