Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

prelevare con excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: prelevare con excel

Postdi Anthony47 » 03/07/14 13:31

La Sub GetTabRaim22 va lasciata e usata come era.
La Sub Worksheet_Change va inserita nel modulo di codice del foglio su cui i link sono inseriti:
-partendo da Excel, tasto dx sul tab col nome foglio; scegli Visualizza codice; scrivi il codice nel frame vuoto di dx.
Poi, una volta che con la GetTabRaim22 hai i link in colonna V e W, scrivi in A3 la riga da esaminare e dovrebbe partire la Worksheet_Change e fare il resto.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: prelevare con excel

Postdi newtek » 07/07/14 21:38

Ti ringrazIo per la spiegazione "passo passo"...
Facendo cosi e mettendo la Worksheet_Change in un altro foglio parte ie , apre la pagina selezionata ma dà un errore 1004 su .select precisamente qui:
Codice: Seleziona tutto
            Cells(I + 1, 1).Select


rimetto il codice completo della Worksheet_Change :
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
'
If Target.Address <> "$A$3" Then Exit Sub
Set IE = CreateObject("InternetExplorer.Application")
   
   
'il codice per leggere il primo link su Foglio2
myUrl = Cells(Target.Value, "V").Value 'primo link
Set IE = CreateObject("InternetExplorer.Application")
   
With IE
    .navigate myUrl
    .Visible = True
    Do While .Busy: DoEvents: Loop    'Attesa not busy
    Do While .readyState <> 4: DoEvents: Loop 'Attesa documento
End With
'
myStart = Timer  'attesa addizionale
Do
    DoEvents
    If Timer > myStart + 1 Or Timer < myStart Then Exit Do
Loop
'Leggi le tabelle, su un nuovo foglio
Sheets("foglio2").Select     '<<< Vedi testo
Cells.Clear

Set myColl = IE.document.getElementsByTagName("TABLE")
If myColl.Length < 5 Then
    MsgBox ("Numero anomalo di tabelle, abortito")
    GoTo IEQuit
End If
With myColl(4)
    For Each trtr In .Rows
        For Each tdtd In trtr.Cells
            Cells(I + 1, J + 1) = tdtd.innertext
            Cells(I + 1, 1).Select
            J = J + 1
        Next tdtd
        I = I + 1: J = 0
    Next trtr
I = I + 2
'Next myItm
End With
'Next II
SendKeys "{F5}", True
        SendKeys "{ENTER}", True
'il codice ripetuto per leggere il secondo link su Foglio3
myUrl = Cells(Target.Value, "W").Value  'secondo link.
Set IE = CreateObject("InternetExplorer.Application")
   
With IE
    .navigate myUrl
    .Visible = True
    Do While .Busy: DoEvents: Loop    'Attesa not busy
    Do While .readyState <> 4: DoEvents: Loop 'Attesa documento
End With
'
myStart = Timer  'attesa addizionale
Do
    DoEvents
    If Timer > myStart + 1 Or Timer < myStart Then Exit Do
Loop
'Leggi le tabelle, su un nuovo foglio
Sheets("foglio3").Select     '<<< Vedi testo
Cells.Clear

Set myColl = IE.document.getElementsByTagName("TABLE")
If myColl.Length < 5 Then
    MsgBox ("Numero anomalo di tabelle, abortito")
    GoTo IEQuit
End If
With myColl(4)
    For Each trtr In .Rows
        For Each tdtd In trtr.Cells
            Cells(I + 1, J + 1) = tdtd.innertext
            Cells(I + 1, 1).Select
            J = J + 1
        Next tdtd
        I = I + 1: J = 0
    Next trtr
I = I + 2
'Next myItm
End With
'Next II
SendKeys "{F5}", True
        SendKeys "{ENTER}", True

IEQuit:
'Chiusura IE
IE.Quit
Set IE = Nothing
End Sub


Grazie ancora.
newtek
Newbie
 
Post: 3
Iscritto il: 01/07/14 19:51

Re: prelevare con excel

Postdi Anthony47 » 08/07/14 11:21

Il problema sta' nel fatto che la macro Worksheet_Change fa implicitamente riferimento al foglio cui l' evento si riferisce, mentre tu vuoi caricare il contenuto dei link in Foglio2 e Foglio3.
Quindi:
-elimina le istruzioni Cells(I + 1, 1).Select (2 posti)
-modifica Cells.Clear in ActiveSheet.Cells.ClearContents (2 posti)

Inoltre nella tua macro Worksheet_Change
-e' necessario inserire, subito prima della seconda With IE la riga
Codice: Seleziona tutto
I = 0: J = 0

-devi eliminare la seconda e la terza Set IE = CreateObject("InternetExplorer.Application")
-il codice per importare tutte le tabelle presenti sui link lo devi copiare da questa discussione: viewtopic.php?p=581022#p581076 (quello che hai usato e' un ibrido)

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: prelevare con excel

Postdi mat1 » 10/09/15 15:19

Ciao a tutti,facendo delle ricerche in rete ho trovato questa discussione e mi sono subito iscritto per avere il vostro aiuto se possibile.Premetto che di macro ecc... non ne capisco nulla anche se sto cercando di capirci qualcosa guardando e studiando quelle che riesco a reperire in rete.Volevo il vostro aiuto per la creazione di un'archivio da betonews,avrei bisogno di una macro che importi solo le partite di calcio della sezione 1X2betfair dal 2006 ad oggi.Grazie in anticipo.
mat1
Newbie
 
Post: 1
Iscritto il: 10/09/15 15:00

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "prelevare con excel":


Chi c’è in linea

Visitano il forum: Nessuno e 25 ospiti