OVH Cloud OVH Cloud

vba zipper fichier html

3 réponses
Avatar
rederon
Bonjour à tous,

Je recherche une méthode qui me permettrait depuis une macro vba, de
zipper des fichiers non pas présents sur mon disque local, mais
présents sur un site web.

J'ai winzip 8.0 sur mon PC et j'ai essayé avec la méthode shell mais
j'ai bien l'impression que Winzip ne permet pas de faire cela
directement.

Peut-être devrais-je passer par une phase de téléchargement des liens
http vers mon disque dur?

Toutes vos suggestions seront les bienvenues.

Je vous remercie par avance,

Stéphane

3 réponses

Avatar
Philippe.R
Bonsoir Stéphane,
Rien qui convienne ici :
http://www.excelabo.net/moteurs/multixl.php
ou bien là :
http://groups.google.com/groups?as_q=zipper&ie=UTF-8&as_ugroup=microsoft.public.fr.excel&lr=&hl=fr
--
Amicales Salutations
XL 97 / 2000 / 2002
Retirer A_S_ pour répondre en privé.

"rederon" a écrit dans le message de
news:
Bonjour à tous,

Je recherche une méthode qui me permettrait depuis une macro vba, de
zipper des fichiers non pas présents sur mon disque local, mais
présents sur un site web.

J'ai winzip 8.0 sur mon PC et j'ai essayé avec la méthode shell mais
j'ai bien l'impression que Winzip ne permet pas de faire cela
directement.

Peut-être devrais-je passer par une phase de téléchargement des liens
http vers mon disque dur?

Toutes vos suggestions seront les bienvenues.

Je vous remercie par avance,

Stéphane


Avatar
j
pour télécharger le fichier html :

1) méthode rapide mais pas très
souple---------------------------------------------------------------

Declare Function DoFileDownload Lib "shdocvw.dll" (ByVal lpszFile As String)
As Long
Sub telecharge()
DoFileDownload
StrConv("http://jacxl.free.fr/cours_xl/ouvrir_web_suite.html", vbUnicode)
End Sub


2) méthode plus souple mais plus
lourde-------------------------------------------------------------

Declare Function OuvreInternet Lib "wininet" _
Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As
Long, _
ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags
As Long) As Long
Declare Function fermeInternet Lib "wininet" _
Alias "InternetCloseHandle" (ByVal hInet As Long) As Integer
Declare Function code_page Lib "wininet" _
Alias "InternetReadFile" (ByVal hFile As Long, ByVal sBuffer As String,
_
ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Declare Function Ouvrepage Lib "wininet" _
Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl
As String, _
ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal
dwFlags As Long, _
ByVal dwContext As Long) As Long

Sub télécharge_http()
Dim texte_code As String * 1024

fich = "http://jacxl.free.fr/cours_xl/ouvrir_web_suite.html"

'connection au fichier à télécharger
internet = OuvreInternet("", 1, vbNullString, vbNullString, 0) 'ouvre
Internet
'URL = Ouvrepage(internet, fich, vbNullString, ByVal 0&, &H80000000, ByVal
0&) 'ouvre la page Web
URL = Ouvrepage(internet, fich, "", 0, 0, 0) 'ouvre la page Web

'lecture du fichier par paquet de 1024 bytes
txt = ""
nb_caractères_lus = 1
Do While nb_caractères_lus > 0
code_page URL, texte_code, 1024, nb_caractères_lus
txt = txt & Left(texte_code, nb_caractères_lus)
Loop

'ménage
fermeInternet URL 'ferme la page
fermeInternet internet 'ferme Internet

'recopie dans un fichier
Open "c:rien.html" For Output As #1
Print #1, txt
Close #1

End Sub

----------------------------------------------------------------------------
-------------------------
détails sur
http://jacxl.free.fr/cours_xl/cours_xl_jac.html#ouvrir_web_suite



----------------------------------------------------------------------------
--------------------------

"rederon" a écrit dans le message de news:

Bonjour à tous,

Je recherche une méthode qui me permettrait depuis une macro vba, de
zipper des fichiers non pas présents sur mon disque local, mais
présents sur un site web.

J'ai winzip 8.0 sur mon PC et j'ai essayé avec la méthode shell mais
j'ai bien l'impression que Winzip ne permet pas de faire cela
directement.

Peut-être devrais-je passer par une phase de téléchargement des liens
http vers mon disque dur?

Toutes vos suggestions seront les bienvenues.

Je vous remercie par avance,

Stéphane


Avatar
rederon
Bonjour,

Je connaissais les liens que vous m'avez envoyé mais je vous remercie
pour les détails.

Si j'interprète ce que vous ne dites pas, il semble donc impossible de
zipper directement plusieurs fichiers situés sur le web sans passer
par une phase de téléchargement ?

Ce qui me gêne dans la première méthode, ce que l'opérateur doit
intervenir au téléchargement de chaque fichier (quand je disais
"zipper" je voulais en fait créer un fichier d'archive, et donc
télécharger plusieurs fichiers).

Je n'ai pas essayé la seconde méthode. Elle a l'air fastidieuse mais
elle peut convenir à me besoins :
Le but final étant de faire un package de fichiers que l'utilisateur
aura préalablement sélectionné dans une base sur mon intranet. Le
système n'a pas besoin d'être rapide.

Merci encore !

Stephane


"" wrote in message news:<4148a34d$0$20471$...
pour télécharger le fichier html :

1) méthode rapide mais pas très
souple---------------------------------------------------------------

Declare Function DoFileDownload Lib "shdocvw.dll" (ByVal lpszFile As String)
As Long
Sub telecharge()
DoFileDownload
StrConv("http://jacxl.free.fr/cours_xl/ouvrir_web_suite.html", vbUnicode)
End Sub


2) méthode plus souple mais plus
lourde-------------------------------------------------------------

Declare Function OuvreInternet Lib "wininet" _
Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As
Long, _
ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags
As Long) As Long
Declare Function fermeInternet Lib "wininet" _
Alias "InternetCloseHandle" (ByVal hInet As Long) As Integer
Declare Function code_page Lib "wininet" _
Alias "InternetReadFile" (ByVal hFile As Long, ByVal sBuffer As String,
_
ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Declare Function Ouvrepage Lib "wininet" _
Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl
As String, _
ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal
dwFlags As Long, _
ByVal dwContext As Long) As Long

Sub télécharge_http()
Dim texte_code As String * 1024

fich = "http://jacxl.free.fr/cours_xl/ouvrir_web_suite.html"

'connection au fichier à télécharger
internet = OuvreInternet("", 1, vbNullString, vbNullString, 0) 'ouvre
Internet
'URL = Ouvrepage(internet, fich, vbNullString, ByVal 0&, &H80000000, ByVal
0&) 'ouvre la page Web
URL = Ouvrepage(internet, fich, "", 0, 0, 0) 'ouvre la page Web

'lecture du fichier par paquet de 1024 bytes
txt = ""
nb_caractères_lus = 1
Do While nb_caractères_lus > 0
code_page URL, texte_code, 1024, nb_caractères_lus
txt = txt & Left(texte_code, nb_caractères_lus)
Loop

'ménage
fermeInternet URL 'ferme la page
fermeInternet internet 'ferme Internet

'recopie dans un fichier
Open "c:rien.html" For Output As #1
Print #1, txt
Close #1

End Sub

----------------------------------------------------------------------------
-------------------------
détails sur
http://jacxl.free.fr/cours_xl/cours_xl_jac.html#ouvrir_web_suite



----------------------------------------------------------------------------
--------------------------

"rederon" a écrit dans le message de news:

Bonjour à tous,

Je recherche une méthode qui me permettrait depuis une macro vba, de
zipper des fichiers non pas présents sur mon disque local, mais
présents sur un site web.

J'ai winzip 8.0 sur mon PC et j'ai essayé avec la méthode shell mais
j'ai bien l'impression que Winzip ne permet pas de faire cela
directement.

Peut-être devrais-je passer par une phase de téléchargement des liens
http vers mon disque dur?

Toutes vos suggestions seront les bienvenues.

Je vous remercie par avance,

Stéphane