2008-12-13 7 views
4

J'essaie d'utiliser un fichier Excel VB macro pour télécharger des fichiers Excel à partir d'un site protégé par mot de passe membres. J'utilise l'objet « InternetExplorer » pour ouvrir une fenêtre de navigateur, connectez-vous et accédez à la page correcte, la numérisation pour les liens que je veux dans la page. Utilisation de la Workbooks.Open (URLString) ne fonctionne pas parce que Excel est pas connecté. Au lieu du fichier réel, il ouvre la page html pour demander le journal en.Utilisation de VB pour automatiser IE « Enregistrer la cible sous »

Ma préférence serait d'utiliser la macro VB pour automatiser le clic droit "enregistrer la cible sous" événement dans Internet Explorer sur le lien correct, mais je ne sais pas exactement comment le faire.

Répondre

1

Il n'y a pas vraiment une façon de le faire avec l'API Internet Explorer. Si c'est juste un script jetable vous pouvez probablement justifier l'utilisation de SendKeys pour vous.

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 
... 
Sub YourMacro() 
    ... Navigate IE to the correct document, and get it to pop 
    up the "Save As" dialog ... 

    Set sh = CreateObject("WScript.Shell") 
    sh.AppActivate "File Download" 
    sh.SendKeys "S" 
    Sleep 100 
    sh.SendKeys "C:\Path\filename.ext{ENTER}" 
End Sub 

WScript.Shell documentation

0

Si vous connaissez l'URL du fichier que vous voulez télécharger, vous pouvez utiliser cette routine:

Sub HTTPDownloadFile(ByVal URL As String, ByVal LocalFileName As String) 
    Dim http As Object ' Inet 
    Dim Contents() As Byte 

    Set http = New Inet 
    Set http = CreateObject("InetCtls.Inet") 
    With http 
     .protocol = icHTTP 
     .URL = URL 
     Contents() = .OpenURL(.URL, icByteArray) 
    End With 
    Set http = Nothing 

    Open LocalFileName For Binary Access Write As #1 
    Put #1, , Contents() 
    Close #1 
End Sub 
Questions connexes