Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

aggiornare 2 web query in stesso file

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

aggiornare 2 web query in stesso file

Postdi raimea » 10/03/15 22:26

ciao
in un file ho un pulsante con il quale aggiorno delle web querry
con questo codice:
Codice: Seleziona tutto
Sheets("palinsesto").Visible = True
Sheets("palinsesto").Select


For Each WkSh In Worksheets
  For Each WQ In WkSh.QueryTables
   
  WQ.Refresh BackgroundQuery:=False
  Next WQ
    Next WkSh


tutto funziona.

ho tentato di mettere tale file in un altro
nel quale c'e un altro pulsante con gli stessi comandi:

Codice: Seleziona tutto
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True

For Each WkSh In Worksheets
  For Each WQ In WkSh.QueryTables
 '----------------------------------------------
      NQ = NQ + 1  ' queste x vedere in basso il num di querry aggiornate
      Application.StatusBar = "Aggiornamento Classifica/Query N° " & NQ
 '---------------------------------------------------
 
  WQ.Refresh BackgroundQuery:=False
  Next WQ
    Next WkSh


con i quali aggiorno altre tabelle.

come posso separare i 2 aggiornamenti ?

attualmente quando ne lancio uno parte l aggiornamento di tutte le web queery

vorrei aggiornare le tabelle in base al pulsante che premo.

ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: aggiornare 2 web query in stesso file

Postdi Anthony47 » 11/03/15 01:21

Se ad esempio I9 e' compresa nell'area della prima query e B9 in quella della seconda, allora ti bastera' inserire in due macro diverse queste istruzioni:
Codice: Seleziona tutto
    Range("I9").QueryTable.Refresh BackgroundQuery:=False

Codice: Seleziona tutto
    Range("B9").QueryTable.Refresh BackgroundQuery:=False


Puoi anche far riferimento ad altro foglio, es
Codice: Seleziona tutto
    Sheets("Foglio1").Range("I9").QueryTable.Refresh BackgroundQuery:=False

Codice: Seleziona tutto
    Sheets("Foglio1").Range("B9").QueryTable.Refresh BackgroundQuery:=False


Ti sconsiglio di usare la status bar, spesso rimane settata su condizioni in cui non dovrebbe; molto piu' funzionale la userform che ti ho visto spesso usare.

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: aggiornare 2 web query in stesso file

Postdi raimea » 11/03/15 07:31

ciao
alla macro del primo prelievo
ho aggiunta questa riga dove specifico il fgl e la cella di dove c'e webquerry:

Codice: Seleziona tutto
Sheets("palinsesto").Range("b11").QueryTable.Refresh BackgroundQuery:=False


il tutto funziona non ho errori /blocchi.

MA riscontro tempi di esecuzione ben diversi:

la stessa macro di prelievo ,
nel file 1 dove ho solo un foglio con queryweb il tutto si esegue in 1 minuto.

stessa macro importata nel file 2 ,
dove ho altri fogli con queryweb (attivate da altro pulsante) , ci impiega 5 minuti
pur avendo inserito la riga vba sopra riportata.

e' corretto ?

grazie
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: aggiornare 2 web query in stesso file

Postdi Anthony47 » 11/03/15 11:02

La macro si limita a dire "aggiorna la query", come se lo facessi col tasto dx del mouse; eventuali tempi di esecuzione dipendono dall' url da cui stai scaricando.

Se quindi fai due query esattamente uguali e impiegano tempi evidentemente diversi allora la cosa e' anomala; se sono due query diverse (a tabelle diverse) allora la cosa non e' certamente anomala.
Poi, visto che lavori su Fogli diversi (dello stesso file, vero?) dovresti verificare se sul foglio con lunghi tempi di esecuzione ci siano macro di evento (tipo WorksheetChange), nel qual caso sara' meglio inserire un Application.EnableEvents = False subto prima della Refresh e Application.EnableEvents = True subito dopo.

Insomma "dipende..."

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: aggiornare 2 web query in stesso file

Postdi raimea » 11/03/15 18:22

ciao

nel file 1 c'e un solo fgl con web query

il fgl palinsesto , la macro ---> preleva nel mod 1
parte con il pulsante prel part di oggi
tempo circa 1 minuto x fare tutto

ho portato tutto il file 1 in file 2

nel file 2 ci sono altri fgl con web query esempio il fgl camp
nel file 2 fgl socerinord, lancio la stessa macro di file 1 ---> preleva, in mod 17
tempo 6 minuti

provo ad allegare i 2 file:
https://dl.dropboxusercontent.com/u/96374724/file1.rar

ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: aggiornare 2 web query in stesso file

Postdi Anthony47 » 11/03/15 23:32

Sono sconfuso :undecided:
File-1 contiene 35 webquery; File-2 ne contiene 149 (di cui 109 sul foglio CAMP). Non mi sembra strano che aggiornare tutte le query su File-2 richieda "qualche minuto in più" di quanto necessario per aggiornare File-1.

Poi, la macro che aggiorna tutte le query (File-2 Modulo17) contiene
Codice: Seleziona tutto
Sheets("palinsesto").Range("b11").QueryTable.Refresh BackgroundQuery:=False

For Each wkSh In Worksheets
    Debug.Print Format(Timer, "00.0") & " - " & wkSh.Name & " - " & wkSh.QueryTables.Count
    For Each WQ In wkSh.QueryTables
          WQ.Refresh BackgroundQuery:=False
    Next WQ
Next wkSh

(la Debug.Print l'ho inserita io per contare le webquery per foglio)
Cioe' la macro prima aggiorna una specifica webquery [quella in Sheets("palinsesto").Range("b11")] poi aggiorna tutte quelle dell' intero file. E' evidente che il refresh alla Sheets("palinsesto").Range("b11").QueryTable viene ripetuto nel ciclo For Each wkSh in Worksheets - For Each WQ In wkSh / Next WQ - Next whSh; quindi a che pro l' hai inserita? Ovviamente a questo punto non sono nemmeno certo di aver compreso la tua domanda iniziale...

Cosa mi dici?

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: aggiornare 2 web query in stesso file

Postdi raimea » 12/03/15 06:33

ciao
File-1 contiene 35 webquery; File-2 ne contiene 149 (di cui 109 sul foglio CAMP). Non mi sembra strano che aggiornare tutte le query su File-2 richieda "qualche minuto in più" di quanto necessario per aggiornare File-1.


ora ho le idee piu chiare su come funziona

io pensavo si potessero avviare solo le web di un foglio specifico
invece nel file 2 vengono sempre aggiornate tutte.

dato che non ho nessun errore , ma si tratta solo di tempo
tengo tutto cosi.

ti ringrazio x avermi spegato come "gira/funziona"

grazie

ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: aggiornare 2 web query in stesso file

Postdi Anthony47 » 12/03/15 11:19

Puoi aggiornare una singola pivot, tutte le pivot di un foglio, tutte le pivot del file.
Rimanendo sulle tecniche gia' descritte (e tralasciando altre tecniche che reputo meno semplici da sfruttare):
Codice: Seleziona tutto
Sheets("palinsesto").Range("b11").QueryTable.Refresh BackgroundQuery:=False
(devi conoscere una cella su cui la query scarica)

Codice: Seleziona tutto
    For Each WQ In Sheets("palinsesto").QueryTables
          WQ.Refresh BackgroundQuery:=False
    Next WQ
(tutte del foglio indicato)

Codice: Seleziona tutto
For Each wkSh In Worksheets
    Debug.Print Format(Timer, "00.0") & " - " & wkSh.Name & " - " & wkSh.QueryTables.Count
    For Each WQ In wkSh.QueryTables
          WQ.Refresh BackgroundQuery:=False
    Next WQ
Next wkSh
(tutte nel file attivo)

Tutto combinabile a piacere...

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: aggiornare 2 web query in stesso file

Postdi raimea » 12/03/15 18:11

ciao
tutto ok
ora fa cio che chiedevo,
aggiorna solo le web querry di questo foglio
ed impiega tanto-quanto nel file 1, e impiega pochi min/ secondi

Codice: Seleziona tutto
'-----aggiorno webquerry solo di questo foglio--------------

Sheets("palinsesto").Visible = True
Sheets("palinsesto").Select

Sheets("palinsesto").Range("b11").QueryTable.Refresh BackgroundQuery:=False

For Each WQ In Sheets("palinsesto").QueryTables
  WQ.Refresh BackgroundQuery:=False
    Next WQ


'--tiro giu formula x sicurezza------------
    Range("AD12").Select


grazie
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago


Torna a Applicazioni Office Windows


Topic correlati a "aggiornare 2 web query in stesso file":


Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti