Faire un explorateur (Browser) en VBS

Quelques exemples de codes en VBS

——————————————————–

Faire un explorateur (Browser) en VBS

Si vous avez besoin de choisir un fichier pour un traitement en VBS, voici un code qui vous permettra d’ouvrir une fenêtre d’exploration pour récupérer le nom du fichier dans une variable mémoire

'--------------------------------------------------------------------------------------
'@Script: browser.vbs 
'@author: Olivier Benquet 2019
'@usage : 
'Pour choisir un Fichier via une fenêtre d'exportation
'--------------------------------------------------------------------------------------
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Fonction explorateurvbs le résultat de sortie est la variable filebrowser=
Function explorateurvbs(InitDir,Filtre,Titre) 
	Set explorer = CreateObject("WScript.Shell").Exec( _
	"mshta.exe ""about:<object id=d classid=clsid:3050f4e1-98b5-11cf-bb82-00aa00bdce0b></object>" & _
	"<script>moveTo(0,-9999);eval(new ActiveXObject('Scripting.FileSystemObject')" & _
	".GetStandardStream(0).Read(" & _
	Len(InitDir)+Len(Filtre)+Len(Titre)+41&"));function window.onload(){var p=/[^\0]*/;new ActiveXObject('Scripting.FileSystemObject')" & _ 
	".GetStandardStream(1).Write(p.exec(d.object.openfiledlg(initDir,null,filtre,titre)));close();}</script><hta:application showintaskbar=no />""") 
	explorer.StdIn.Write "var initDir='" & InitDir & "';var filtre='" & Filtre & "';var titre='" & Titre & "';" 
	explorateurvbs = explorer.StdOut.ReadAll 
End Function
result=MsgBox ("Programme VBS pour récupérer un nom de fichier " & VbCrLf &_
				"avec son chemin" & VbCrLf & VbCrLf &_  
				"Oui = Pour Lancer l'explorateur" & VbCrLf & VbCrLf &_ 
				"Non = arrète le VBS", vbYesNo+vbInformation , "Explorateur VBS")
If result=6 Then    'si réponse oui
	'Répertoire par défaut où va s'ouvrir l'explorateur - vous pouvez utiliser des jocker en remplaçant par exemple :
	' *.* par *.pdf pour n'afficher que le PDF ou par essai*.* pour n'afficher que les fichiers commençant par essai
	InitDir = "c:\temp\*.*"
	'Filtres rapide paramétrable - vous pouvez aussi enlever cette ligne (supprime le choix d'un filtre)
	Filtre = "All File (*.*)|*.*|pdf files (*.pdf)|*.pdf|csv files (*.csv)|*.csv|txt files (*.txt)|*.txt|log files (*.log)|*.log|"
	'Titre de la fenetre d'exploration
	Titre = "Choisissez votre Fichier" 
	'lancement de l'explorateur et recupération du nom de fichier
	filebrowser = explorateurvbs(Replace(InitDir,"\","\\"),Filtre ,Titre) 
	'affichage de la variable contenant le fichier séléctionné 
  		affiche = MsgBox ("Vous avez sélectionné :" & VbCrLf & VbCrLf & VbCrLf & _   
		filebrowser & VbCrLf, vbOKOnly+vbInformation, "Explorateur VBS")
End if		
Set objFSO = Nothing
Wscript.Quit

——————————————————–

Retirer le Chemin (répertoire) devant un nom de fichier

Voici un petit bout de code qui permet de retirer le chemin d’un fichier pour ne conserver que son nom. Si vous utiliser mon explorateur par exemple vous allez obtenir une variable avec le chemin complet (exemple c:\temp\toto.txt) mais voila vous voulez le copier ailleurs donc récupérer son nom toto.txt sans le chemin c:\temp\
Il vous suffit d’utiliser ce petit code :

'Nom du fichier avec son chemin
filebrowser = "c:\temp\toto.txt"
'récupération du nom du fichier sans son chemin 
NomCourtFichier = CreateObject("Scripting.FileSystemObject").GetFileName(filebrowser)
'affichage du résultat
affiche = MsgBox ("Vous aviez le fichier avec le chemin : " & filebrowser & VbCrLf & VbCrLf & VbCrLf & _   
"Vous obtenez : " & NomCourtFichier & VbCrLf, vbOKOnly+vbInformation, "Explorateur VBS")
 
Wscript.Quit