Condividi:        

Difficolta prelievo dati QueryWeb

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

Difficolta prelievo dati QueryWeb

Postdi Francesco53 » 03/11/13 14:48

Buongiorno a tutto il Forum,
avevo realizzato una query web per il prelievo dei dati da una pagina web,
ultimamente anzichè salvare i dati relativi di mio interesse, mi scarica la
pagina intera completa di codice, e pertanto inutilizzabile.
Chiedo cortesemente se vi è la possibilità di sopperire a questa difficoltà.
Posto il codice relativo per eventuale correzione dello stesso.
Codice: Seleziona tutto
Sub ProvaWeb()
Sheets("Foglio2").Select
Data = Worksheets("Foglio2").Range("N2").Value
        Giorno = Format(Data, "yyyy-mm-dd")
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.lottologia.com/?area=10elotto5minuti&action=Archivio&date=" & Giorno _
        , Destination:=Range("$A$1"))
        .Name = "Archivio"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub

Ringrazio chi può aiutarmi a risolvere il problema.
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Sponsor
 

Re: Difficolta prelievo dati QueryWeb

Postdi Anthony47 » 05/11/13 01:18

E' il solito problema delle pagine create in modo dinamico...
Non so se la web query potrebbe funzionare, in alternativa potresti adottare una macro come questa, derivata da altri lavori simili e da risposta appena ad Apocrimata data su altra discussione (viewtopic.php?f=26&t=100441#p579926)
Codice: Seleziona tutto
Sub GetTabbb()
'
Sheets("Foglio2").Select
Data = Worksheets("Foglio2").Range("N2").Value
        Giorno = Format(Data, "yyyy-mm-dd")
myUrl = "http://www.lottologia.com/?area=10elotto5minuti&action=Archivio&date=" & Giorno
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
'Worksheets.Add
Cells.Clear

Set myColl = ie.document.getElementsByTagName("TABLE")
If myColl.Length < 1 Then
    MsgBox ("Numero anomalo di tabelle, abortito")
    GoTo IEQuit
End If
For Each myItm In myColl
With myItm
    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
End With
Next myItm
Stop     'Vedi testo

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

Lavora su Foglio2, il cui contenuto VIENE AZZERATO SENZA PREAVVISO; se questo non e' compatibile con il tuo Foglio2 allora crea la tabella su altro foglio e infine copiala su Foglio2.
L' istruzione Stop serve solo per test; quando sei sicuro che il risultato ottenuto e' pari ai dati presenti sul server potrai eliminarla (nel frattempo sarai costretto a premere F5 per completare la macro dopo il controllo "a occhio").

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Difficolta prelievo dati QueryWeb

Postdi Francesco53 » 05/11/13 12:09

Buongiorno Anthony e grazie per il tuo intervento, ho però la seguente difficoltà
vorrei poter continuare ad utilizzare come browser Firefox, la macro prevede
l'utilizzo di Internet Explorer, è possibile darmi le giuste indicazioni?
Io ho cercato di sostituire le parti relative ma mi và in errore.
Grazie
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Re: Difficolta prelievo dati QueryWeb

Postdi Flash30005 » 05/11/13 17:30

Perché che fine hai fatto fare a IE?
Usi per caso Linux?
Non ostiniamoci ad usare altri browser e incasinare sia IE che Windows.
Proprio ieri ho disinstallato Crome molto utilizzato dall'utente ma non riusciva più ad aprire pagine particolari con nessun browser.
Disinstallato il browser pulizia di IE tutto è tornato a funzionare.
Poi ognuno ha la libertà di rompersi il capo come vuole. :D

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Difficolta prelievo dati QueryWeb

Postdi Anthony47 » 06/11/13 01:23

"Appena" Chrome e Firefox renderanno disponibile una loro libreria per l' interfacciamento col vba si potra' fare a meno di InternetExplorer per queste automazioni.
Comunque la macro dovrebbe aprire e chiudere IE, che fastidio ti da? Nota che potresti anche eliminare l' istruzione " .Visible = True", ma se poi il browser deve segnalarti qualcosa te lo segnala in una finestra nascosta e rimani impiccato.
Infine questa versione di macro usa un criterio diverso, sempre utilizzando librerie software sviluppate dalla tanto vituperta mamma Microsoft:
Codice: Seleziona tutto
Sub GetTabbbV2()
'Richiede riferimento alla Microsoft HTML Object Library e a Microsoft WINHTTP Services
'
Dim myDoc As HTMLDocument           '***
Dim myUrl As String                 '***
'
Sheets("Foglio2").Select
Data = Worksheets("Foglio2").Range("N2").Value
        Giorno = Format(Data, "yyyy-mm-dd")

myUrl = "http://www.lottologia.com/?area=10elotto5minuti&action=Archivio&date=" & Giorno

Set myDoc = RequestedDocument(myUrl)

'Leggi le tabelle, su un nuovo foglio
'Worksheets.Add
Cells.Clear

Set myColl = myDoc.getElementsByTagName("table")   ' ie.document.getElementsByTagName("TABLE")
If myColl.Length < 1 Then
    MsgBox ("Numero anomalo di tabelle, abortito")
    GoTo ieQuit
End If
For Each myItm In myColl
With myItm
    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
End With
Next myItm
ieQuit:
Set myDoc = Nothing
End Sub


Function RequestedDocument(URL As String) As HTMLDocument
    Dim Req As WinHttpRequest, RT As String, Doc As New HTMLDocument
'   
'RICORDA
'VbMethod = 1
'VbGet = 2
'VbLet = 4
'VbSet = 8
'   
    If Req Is Nothing Then Set Req = New WinHttpRequest
    Req.Open "GET", URL
    Req.Send
    RT = Req.ResponseText
'
    Set Doc = New HTMLDocument
    Doc.Clear
    CallByName Doc, "Write", 1, RT
'   
    Set RequestedDocument = Doc
End Function

Richiede pero' che nel vba sia impostato il riferimento alla Microsoft HTML Object Library e a Microsoft WINHTTP Services: Menu /Strumenti /Riferimenti; cerca i due componenti , spuntali, premi Ok.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Difficolta prelievo dati QueryWeb

Postdi Francesco53 » 06/11/13 12:08

Buongiorno Anthony,
ti ringrazio per l'aiuto ho però il problema che quando cerco di installare
Microsoft WINHTTP Services mi da errore dll e quindi non riesco ad utilizzare
il tuo codice. Ho cercato su internet ma non riesco a trovare per Vista la dll
da scaricare.
Grazie
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Re: Difficolta prelievo dati QueryWeb

Postdi Anthony47 » 07/11/13 02:26

Hummmm... mi dici esattamente quale procedura stai usando?
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Difficolta prelievo dati QueryWeb

Postdi Francesco53 » 07/11/13 09:29

Ciao Anthony questi sono i passaggi che faccio:
Immagine
clicco su OK e poi esce questo messaggio:
Immagine
Grazie
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Re: Difficolta prelievo dati QueryWeb

Postdi Anthony47 » 07/11/13 14:12

Evidentemente hai l' installazione di Excel corrotta...
Io uso XL2010 a 32 bit su Win7, e la winhttp.dll e' in C:\Windows\System32, non capisco perche' la tua dovrebbe essere sotto Documents.

Poiche' le mie conoscenze partono da quando Excel funziona, posso solo consigliarti di provare un "Ripristino" dell' applicazione; trovi questa possibilita' tra le Opzioni del programma.
E se non funziona allora rimuovere e reinstallare.
Tuttavia la mia impressione e' che questa dll sia complementare a InternetExplorer, cioe' un componente del sistema operativo; quindi credo che lavorare su Office o Excel non risolva niente.
Prova a chiedere nella sezione Sistemi Operativi Windows come ripristinare quella dll.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Difficolta prelievo dati QueryWeb

Postdi Francesco53 » 07/11/13 15:08

Grazie Anthony provo come da te consigliato.
francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45


Torna a Applicazioni Office Windows


Topic correlati a "Difficolta prelievo dati QueryWeb":


Chi c’è in linea

Visitano il forum: Anthony47 e 12 ospiti