Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

aiuto query web

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

aiuto query web

Postdi caccia » 16/04/12 12:08

salve a tutti e complimenti per il forum, volevo chiederti c'è qualcuno che sa se si puo costruire una query web con inserimento del sito che abbia un interfaccia utente?mi spiego meglio...vorrei che in base al sito che inserisco mi scarichi i dati...pero non riesco a fare in modo che mi appaia un interfaccia in cui io possa inserire ogni volta un sito diverso!!!non so se sia fattibile..spero qualcuno mi aiuti....grazie
caccia
Newbie
 
Post: 1
Iscritto il: 16/04/12 12:07

Sponsor
 

Re: aiuto query web

Postdi Anthony47 » 16/04/12 23:09

Ciao caccia, benvenuto nel forum.
Avrai notato che la query web contiene, nel codice, non solo il link ma anche i riferimenti a quali dati nella pagina vanno prelevati e (spesso) come vanno trattati.
Se hai un numero noto di query da eseguire una ipotesi potrebbe essere quella di predisporre il codice di "tutte" le query e l' interfaccia utente potra' chiedere quale di quelle sia da eseguire.

Se invece (da prove effettuate...) i dati da prelevare sono sempre gli stessi e idem il loro trattamento allora
-inserisci sul tuo foglio di lavoro la prima query
-poi userai una macro del tipo
Codice: Seleziona tutto
nConn="il mio nuovo link.html" & ", Destination =Range(""A1"")"   '<<< QUI la vera desinazione
ActiveSheet.QueryTables(1).Connection nConn
ActiveSheet.QueryTables(1).refresh

Come compilare la variabile nConn dipende dal tipo di interfaccia che vorrai realizzare; se ad esempio inserisci in una cella un elenco di possibili origini (gestito tramite un "convalida da elenco") allora sara'
Codice: Seleziona tutto
nConn= range("LaCellaColNuovoLink").value & ", Destination =Range(""A1"")"   '<<< QUI la vera desinazione

Fai sapere, ciao.

Doveroso addendum:
Quanto suggerito e' sintatticamente sbagliato, perche' la proprieta' Connection puo' essere usata solo per impostare l' url target della query, non anche la Destination.
Un errore simile lo avevo fatto anche qui: viewtopic.php?p=534666#p529773 (uso di "Destination" per impostare la cella di destinazione, salvo che quel metodo e' "read only") ma la risposta dell' Utente mi aveva "costretto" a rendermi conto subito dell' errore e (forse) rimediare. Chi e' interessato al problema quindi consulti quest' ultimo link.
Ciao
Anthony
27-10-2012
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: aiuto query web

Postdi mpsinf » 19/10/12 21:05

Riprendo questa richiesta in quanto assomiglia alla mia richiesta, volendo analizzare più pagine sottopagine di un sito web tramite una query web, avendo un elenco delle sotto pagine volevo un aiuto su come realizzare la macro.
Es. www.miosito.it/prima e in una tabella a parte in Excel ho un elenco del tipo "seconda", "terza" ecc. desidero che la macro cambi la query in www.miosito/seconda e così via.
La modifica nel caso in cui avessi invece dei numeri progressi penso che si possa fare anche con un ciclo for next.. Tipo www.miosito.com/001 ... www.miosito.com/002 ecc.
Grazie per l'invio di qualche esempio
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Re: aiuto query web

Postdi Anthony47 » 21/10/12 00:14

Nella discussione e' gia' descritto come cambiare la "connessione" di una query e come rieseguire la query per agganciare i nuovi dati:
Codice: Seleziona tutto
    nConn="il mio nuovo link.html" & ", Destination =Range(""A1"")"   '<<< QUI la vera destinazione
    ActiveSheet.QueryTables(1).Connection nConn
    ActiveSheet.QueryTables(1).refresh


Se nel foglio hai piu' query e non riesci al volo a individuare "l' indice" di quella che vuoi modificare ("1", nel codice) allora puoi usare il "nome"; per trovarlo:
-seleziona una cella dei risultati della query
-tasto dx, scegli Proprieta' intervallo dati; il "nome" e' il primo campo che ti viene visualizzato, e se vuoi puoi anche modificarlo in una sigla piu' comoda
Poi userai
Codice: Seleziona tutto
ActiveSheet.QueryTables("NomeDellIntervalloDati"). Etc etc


Tutto questo presuppone che tutte le definizioni e le istruzioni date per la nuova query sono le stesse della query precedente, e che la struttura della nuova pagina web sia esattamente uguale alla precedente.

Nel caso di ciclo For /Next, applicabile se la connessione cambia solo di una desinenza es da
http://www.prezzipazzi.com/prodotto/iph ... p?id=73877 a http://www.prezzipazzi.com/prodotto/iph ... p?id=73878, allora adotterai una tecnica del tipo
Codice: Seleziona tutto
CRoot= "http://www.prezzipazzi.com/prodotto/iphone-5.php?id="   '<< La "base" della connessione
For I= 73000 to 74000
    nConn=CRoot & I & ", Destination =Range(""A1"")"   '<<< QUI la vera destinazione
    ActiveSheet.QueryTables(1).Connection nConn
    ActiveSheet.QueryTables(1).refresh
'
'altre istruzioni
Next I

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: aiuto query web

Postdi mpsinf » 21/10/12 10:05

Non sapendo perchè la tua soluzione non funziona, ho provatoa a registrare due macro che aggiornano e creano le query web
e il codice mi sembra un po' diverso da quello che mi hai suggerito,
già se provo a togliere la dicitura "URL;" la macro non funziona più
inoltro se guardi l'ultima macro (macrox) che ho creato per prova, nel msgbox la scritta "http://google.it/, Destination =Range("A1") non credo sia la variabile corretta da passare al comando ActiveSheet.QueryTables(1).Connection pippo


Sub Macro3()
'' Macro3 Macro
With Selection.QueryTable
.Connection = "URL;http://www.google.it"
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingAll
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub

Sub Macro4()
' Macro4 Macro

With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.google.it", _
Destination:=Range("$A$1"))
.Name = "www.google.it_2"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingAll
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub

Sub Macrox()


pippo = "http://www.google.it/" & ", Destination =Range(""A1"")"

MsgBox pippo ' visualizza

ActiveSheet.QueryTables(1).Connection pippo
ActiveSheet.QueryTables(1).Refresh
MsgBox "passato"
End Sub
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Re: aiuto query web

Postdi Anthony47 » 21/10/12 11:01

Effettivamente era sbagliata la riposta che diedi a caccia 6 mesi fa, e su quell' errore ne ho costruito un secondo :oops:

In tardo pomeriggio cerchero' di postare un chiarimento.

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: aiuto query web

Postdi Anthony47 » 22/10/12 01:02

Allora...
Cominciamo con l' errore fatto nel vecchio post.
Anthony ha scritto:
Codice: Seleziona tutto
nConn="il mio nuovo link.html" & ", Destination =Range(""A1"")"   '<<< QUI la vera desinazione
ActiveSheet.QueryTables(1).Connection nConn

Qui ci sono 2 errori:
-la sintassi per la proprieta' Connection e' .Connection = "Nuova Connessione" (quindi con "=")
-Destination non e' un parametro ammesso nella proprieta' Connection

Quindi le istruzioni che ho quotato prima dovrebbero essere
Codice: Seleziona tutto
    nConn="il mio nuovo link.html" '<<Solo il mio nuovo Link + vedi Nota1
    ActiveSheet.QueryTables(1).Connection = nConn

Nota1: il link deve anche specificare il tipo di destinazione, perche' la Query puo' essere indirizzata verso varie origini dati; trattandosi di origine web questa indicazione viene data dal preambolo "Url;" che deve precedere l'indirizzo web.
Quindi un esempio corretto di connessione web sara'
Codice: Seleziona tutto
nConn = "URL;http://www.google.it"

E se il link html e' contenuto mettiamo in cella C2 del foglio attivo allora si potra' usare
Codice: Seleziona tutto
nConn= "URL;" & range("C2").value


Spero che con queste informazioni, con tutte le altre sperimentazioni gia' da te fatte, trovi la quadra del problema.

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: aiuto query web

Postdi mpsinf » 15/12/12 11:43

Prendendo come riferimento il seguente link
http://www.prezzipazzi.com/prodotto/gal ... p?id=83393
come è possibile, tramite query web o analisi html del file, importare la lista delle ultime 10 puntate visto che sembra non appartenente alla pagina web ? dalle prove effettuate non sono presenti ne nella web query ne nell'origine del file html !
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Re: aiuto query web

Postdi Anthony47 » 15/12/12 19:27

Ho provato a impostare la query web e ho potuto selezionare e importare la tabella; tu hai un comportamento diverso?
Per quanto riguarda l' eventuale uso di mshtml.tlb, il sorgente di pagina dice:
<td valign="top"><iframe id=storico src="/storico_bid.php?refresh=1&id=83393" height="300" width="360" border="0" scrolling="no" frameborder="0"></iframe> </td>

Quella tabella e' cioe' un inframe linkato all' url http://www.prezzipazzi.com/storico_bid. ... 1&id=83393
Nel sorgente di queto link trovi le informazioni che cerchi.

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: aiuto query web

Postdi mpsinf » 16/12/12 10:35

La situazione che mi si presenta è questa. Se manualmente inserisco in una cella la Queryweb con indirizzo http://www.prezzipazzi.com/prodotto/gal ... p?id=83393 la tabella delle puntate degli utenti non viene visualizzata.
Se però nel fare tale procedura seleziono soltanto la sezione contrassegnata da :arrow: in prossimità delle lista delle puntate allora mi importa solo la sezione e viene visualizzata.

Analogamente facendo la procedura da VBA non mi si visualizza la tabella delle puntate
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Re: aiuto query web

Postdi mpsinf » 16/12/12 22:22

Ho risolto con l'analisi mshtml.tlb ricavandolo dall' iframe suggerito, inoltre risulta più semplice perchè è sufficiente inserire il n. alla fine della stringa da cercare. Grazie ancora per la dritta.
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33


Torna a Applicazioni Office Windows


Topic correlati a "aiuto query web":


Chi c’è in linea

Visitano il forum: PcBase e 10 ospiti