Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1907 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA - IE - enregistrer sous - pb de control

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA - IE - enregistrer sous - pb de control

n°1779410
olivieryuy​u
Posté le 28-08-2008 à 19:50:34  profilanswer
 

Bonjour,
 
Je cherche a faire en sorte que chaque fois qu un download demarre via internet explorer cela s enregistre automatiquement, selon un nom que j aurais choisi sur une liste (sur excel), dans un repetoire determine prealablement via un macro excel
 
J ai trouve ce code sur ce site. Il permet que lorsqu un download demarre le bouton "save" soit presse 2 fois. Le probleme est ke je ne sais pas comment faire pour que le nom du fichier enregistrer soit celui qui se trouve dans mon fichier excel, ni comment lui dire d enregister dans un repertoire ke j aurais choisi prealablement.
 
Je ne suis pas programmeur a la base, si klkn pouvait m aider ce serait sympa.
 
Merci bien
 
Le code:
 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
    (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SetActiveWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
    (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
 
Public hwnd As Long
Private Const WM_KEYDOWN = &H100
Private Const WM_CHAR = &H102
Private Const VK_RETURN = &HD
Private Const BM_CLICK = &HF5
 
 
Sub LaunchDownload()
 
    Set ie = CreateObject("InternetExplorer.Application" )
   
    acceuil = "google"
             
    'connection à la page d'acceuil intranet pour éviter les problèmes de login/password
    ie.Navigate acceuil
    ie.Visible = True
    Do Until ie.ReadyState = 4 'Loop unitl ie page is fully loaded
        DoEvents
    Loop
     
        ie.Navigate acceuil
        Do Until ie.ReadyState = 4
            DoEvents
        Loop
        hwnd = 0
        hwnd_fils = 0
        Do
            hwnd = FindWindow(vbNullString, "File Download" )
            If hwnd = 0 Then
                PauseTimer (1)
            Else
                hwnd_button = FindWindowEx(hwnd, 0, "Button", "&Save" )
            End If
        Loop While hwnd_button = 0
        hwnd_button_hexa = Hex(hwnd_button)
        hwnd_hexa = Hex(hwnd)
       
        SetActiveWindow hwnd
        SendMessage hwnd_button, BM_CLICK, ByVal CLng(0), ByVal CLng(0)
       
        Do
            hwnd_fils = FindWindow(vbNullString, "Save As" )
            If hwnd_fils = 0 Then
                PauseTimer (1)
            Else
                hwnd_button = FindWindowEx(hwnd_fils, 0, "Button", "&Save" )
                hwnd_level1 = FindWindowEx(hwnd_fils, 0, "ComboBoxEx32", "" )
                hwnd_level2 = FindWindowEx(hwnd_level1, 0, "ComboBox", "" )
                hwnd_level3 = FindWindowEx(hwnd_level2, 0, "Edit", "" )
            End If
        Loop While hwnd_button = 0
 
        hwnd_fils_hexa = Hex(hwnd_fils)
        hwnd_text_hexa = Hex(hwnd_text)
        hwnd_level3_hexa = Hex(hwnd_level3)
         
        PostMessage hwnd_fils, WM_KEYDOWN, VK_RETURN, 0 'enter
                         
    Set ie = Nothing
End Sub
 
'celle du dessous je l'ai trouvé sur le net... je ne sais plus où, en tout cas merci à celui qui l'a écrite
Sub PauseTimer(ByVal nSecond As Single)
Dim t0 As Single
     'temps de référence
     t0 = Timer
     'boucle d'attente
     Do While Timer - t0 < nSecond
           Dim dummy As Integer
           dummy = DoEvents()
           'si on dépasse minuit,il faut
           'retrancher un jour
           If Timer < t0 Then
               t0 = t0 - 24 * 60 * 60
           End If
     Loop
End Sub

mood
Publicité
Posté le 28-08-2008 à 19:50:34  profilanswer
 

n°1785001
bleu34
Posté le 10-09-2008 à 14:11:26  profilanswer
 

Salut,
 
Je te conseille de prendre ma macro entière : ici.
Tu as tronqué dans ton message la partie qui t'interesse vraiment : celle qui va du For num=1 ...... jusqu'au Next. C'est là que j'envois le nom du fichier à la fenetre Sauvegarder sous.
Donc tout ce que tu as à faire c'est remplacer la valeur de la variable "fichier_baseline" dans mon exemple par la valeur de ta cellule dans excel genre :  
fichier_baseline=Worksheets("TaFeuille" ).Cells(1,1).Value.  
 
Voilà
A+


Message édité par bleu34 le 10-09-2008 à 14:12:55

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA - IE - enregistrer sous - pb de control

 

Sujets relatifs
[VBA] Reprise données Excel dans tableau Word[VBA] Tableau XLS et document DOC
[VBA - Excel] Envoi d'un mail via un service gratuit[Résolu][VBA-Excel]Problème d'affichage de feuille
[VBA EXCEL 2007] macro ultra lenteProblème sur IE mais pas sur Firefox
[VBA] Supprimer un saut de page[VBA] saisie dans une form
[RESOLU] [VBA excel] copier un fichier d'un repertoire a un autreTracer des graphiques à la chaînes avec Excel/VBA [Résolu]
Plus de sujets relatifs à : VBA - IE - enregistrer sous - pb de control


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR