Télécharger un fichier à partir d'un site Internet (VBS)


On peut télécharger n'importe quel type de fichier sur un site Internet en faisant un clic droit de souris sur un lien puis en "enregistrant la cible" sur le disque dur.
On peut obtenir le même résultat en Visual Basic en utilisant les API. Un exemple en VBA est présenté dans la rubrique "utile" (cliquez ici).

Si on ne dispose pas de VB, on peut utiliser le VBA d'Excel en lançant une instance cachée d'Excel (cliquez ici pour voir le principe).

Le VBScript proposé commence par lancer une instance d'Excel (cachée), y ouvre un nouveau classeur dans lequel il recopie la macro VBA de téléchargement avant de la lancer puis de fermer Excel.
Pour l'utilisateur (à condition évidemment que son poste soit équipé d'Excel), tout se passe comme si le VBScript lançait le téléchargement.

cliquez ici pour voir le texte complet du script
cliquez ici pour télécharger le script (zippé)
cliquez ici pour ouvrir le script
cliquez ici pour voir la macro vba.



On peut de la même façon utiliser la fonction API "DoFileDownload" de la dll "shdocvw.dll" :
adr = InputBox("URL du fichier à télécharger ?", "téléchargement", _
      "http://jacxl.free.fr/cours_xl/vba/ecriture_japonais.zip")
Set exl = WScript.CreateObject("excel.Application")
exl.Visible = false
set fichxl=exl.workbooks.add
Set mdle = fichxl.VBProject.VBComponents.Add(1)
mdle.CodeModule.InsertLines 1, "Declare Function DoFileDownload Lib ""shdocvw.dll"" _"
mdle.CodeModule.InsertLines 2, " (ByVal lpszFile As String) As Long"
mdle.CodeModule.InsertLines 3, "Sub telecharge()"
mdle.CodeModule.InsertLines 4, "adr = StrConv(""" & adr & """,vbUnicode)"
mdle.CodeModule.InsertLines 5, "DoFileDownload adr"
mdle.CodeModule.InsertLines 6, "End Sub"
exl.Run "telecharge"
wscript.sleep(60000)
fichxl.close(false)
exl.quit
Set fichxl=nothing
set mdle=nothing
set exl=nothing

(Attention, allongez la durée d'attente avant fermeture d'Excel pour le téléchargement de gros fichiers).


Enfin, si le fichier à récupérer sur le Web est un fichier texte, il suffit de piloter son ouverture dans Internet Explorer et d'en lire le texte :
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate ("http://jacxl.free.fr/cours_xl/uploader.html.txt")
Do While ie.Busy
WScript.Sleep (100)
Loop
WScript.Sleep (1000)
MsgBox ie.document.body.innertext
ie.Quit
Set ie=Nothing