Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Connessioni 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

Connessioni query web

Postdi Statix » 25/11/14 11:58

Ciao a tutti,
ho un problema con una query web,
ogni volta che la lancio mi crea una nuova connessione,
e queste aumentano di volta in volta,
ho una macro che mi aggiorna mensilmente tutti i giorni del mese in automatico,
quindi la macro cicla per 30/31 volte,e questo successivamente mi crea altrettante connessioni ,
che poi ad ogni aggiornamento aumentano a dismisura dando anche qualche problema, se lancio la macro per un sola volta mi cicla anche le 30/31 connessioni,
ho provato con una macro trovata nel forum che conta le connessioni,
c'era anche una macro che le cancellava ma non del tutto,
il problema da quanto ho potuto capire dipende dalla riga

Codice: Seleziona tutto
With ActiveSheet.QueryTables.Add(Connection:=

ho provato a fare qualche modifica alla macro ma non ci sono riuscito,
ho da poco intrapreso questo studio su query web.
Codice: Seleziona tutto
Sub Irlanda()
[A3:D400].ClearContents
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.lotto.net/it/lotteria-irlandese/archivio-2014.asp", _
        Destination:=Range("$B$3"))
        .Name = "archivio-2014_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "1"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    [D3:D400].ClearContents
End Sub
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Sponsor
 

Re: Connessioni query web

Postdi Anthony47 » 25/11/14 12:42

Il problema e' che usi ActiveSheet.QueryTables.Add, che appunto "aggiunge una query" lasciando al loro posto tutte le altre precedenti.
Il mio suggerimento e' che imposti il tuo file con la Query di partenza, e poi ne modifichi il "collegamento"; un caso simile l' avevamo visto qui: viewtopic.php?t=86762#p493411
Se hai problemi a modificare il collegamento seguendo l' esempio li' pubblicato scrivi ancora, indicando quante web query ci sono nel foglio, ottenibile col codice MsgBox ActiveSheet.QueryTables.Count.

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: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Connessioni query web

Postdi Statix » 25/11/14 16:35

Ciao Anthony47,
ho letto il post ma non riesco a capire,
nel file allegato ho trovato questa macro che cancella le connessioni,
ma non funziona perfettamente ne cancella solo alcune di volta in volta per cancellarle tutte devo eseguirla più di una volta.


Codice: Seleziona tutto
Sub Cancella_Tutte_Query()
    For Each Sh In Worksheets
        RR = Sh.QueryTables.Count
        If RR > 0 Then
            MsgBox Sh.Name & " - Query Trovate: " & RR
        End If
        Totale = Totale + RR
        For I = 1 To RR
            MsgBox "Foglio:" & Sh.Name & " - Query: " & Sh.QueryTables(I).Name
            On Error Resume Next
            Sh.QueryTables(I).Delete
        Next I
    Next Sh
    MsgBox "Totale Query: " & Totale
End Sub

per quanto riguarda la conta delle macro ne sono tante in quanto ,
lancio la macro per un totale di quanti sono i giorni del mese in corso,
esempio oggi 25 ,la query web cicla per 25 volte e si creano altrettante 25 connessioni,
ed ogni volta che aggiorno ne aggiunge ancora, se i giorni aumentano,
quindi mi servirebbe una macro che dopo aver eseguito la wuery web ciclica ,mi cancelli tutte le connessioni.
quella postata non funziona bene.
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Connessioni query web

Postdi Statix » 25/11/14 23:57

Momentaneamente ho risolto creando una macro con una 50ina di connessioni da cancellare,
funziona perfettamente anche se in modo elementare, la macro cancella tutte le connessioni esistenti,
in genere la macro che cicla la query web(cambia il giorno nella query web ad ogni ciclo) non supera le 32/33 connessioni.
grazie.


Codice: Seleziona tutto
Sub Connessioni()
Sheets("Web").Select
 On Error Resume Next
   
   ActiveWorkbook.Connections("Connessione50").Delete
   ActiveWorkbook.Connections("Connessione49").Delete
   ActiveWorkbook.Connections("Connessione48").Delete
   ActiveWorkbook.Connections("Connessione47").Delete
   ActiveWorkbook.Connections("Connessione46").Delete
   ActiveWorkbook.Connections("Connessione45").Delete
   ActiveWorkbook.Connections("Connessione44").Delete
   ActiveWorkbook.Connections("Connessione43").Delete
   ActiveWorkbook.Connections("Connessione42").Delete
   ActiveWorkbook.Connections("Connessione41").Delete
   ActiveWorkbook.Connections("Connessione40").Delete
   ActiveWorkbook.Connections("Connessione39").Delete
   ActiveWorkbook.Connections("Connessione38").Delete
   ActiveWorkbook.Connections("Connessione37").Delete
   ActiveWorkbook.Connections("Connessione36").Delete
   ActiveWorkbook.Connections("Connessione35").Delete
   ActiveWorkbook.Connections("Connessione34").Delete
   ActiveWorkbook.Connections("Connessione33").Delete
   ActiveWorkbook.Connections("Connessione32").Delete
   ActiveWorkbook.Connections("Connessione31").Delete
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Connessioni query web

Postdi Anthony47 » 26/11/14 00:26

Per cancellare tutte le query il loop deve essere fatto all' indietro:
Codice: Seleziona tutto
        For I = RR To 1 step -1
            MsgBox "Foglio:" & Sh.Name & " - Query: " & Sh.QueryTables(I).Name
            On Error Resume Next
            Sh.QueryTables(I).Delete
        Next I
    Next Sh

Se vuoi cancellare solo nel foglio attivo: elimina il ciclo For Each Sh In Worksheets /Next Sh e (nelle righe restati) sostituisci "Sh" con "ActiveSheet".
In questo modo cancelli le query sporche che sono nel foglio e ne puoi mettere una nuova.

Ora non ho capito se le query che ripeti (una volta al giorno?) hanno qualche parametro diverso di volta in volta; se No, ti bastera' una macro che contiene ad esempio
Codice: Seleziona tutto
Sub WQAggiorna
    Sheets"(NomeFoglio").Select
    Range("B3").QueryTable.Refresh BackgroundQuery:=False
End Sub

Cambia B3 con una cella appartenente alla tua query, se B3 e' sbagliato.

Nel tuo file ci saranno anche un tot di intervalli nominati, creati da ogni QueryTables.Add; sarebbe meglio cancellare anche loro prima di inserire la nuova e unica query.
Ti segnalo quest' altra discussione analoga alla tua, dove e' presente anche una macro per cancellare questi nomi: viewtopic.php?f=26&t=81318&p=570781#p570781

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: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Connessioni query web

Postdi Statix » 26/11/14 20:36

Ciao Anthony47,
ho letto il post da te linkato,
ho risolto inserendo questa macro, la prima elimina tutte le connessioni tranne una,
e la seconda elimina le query web tranne una.
grazie infinite

Codice: Seleziona tutto
Sub Connessioni()
Sheets("Web").Select
For C = ActiveWorkbook.Connections.Count To 2 Step -1
    ActiveWorkbook.Connections(C).Delete
Next C

   
   For I = ActiveSheet.QueryTables.Count To 2 Step -1
    ActiveSheet.QueryTables(I).Delete
Next I
   
End Sub
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Connessioni query web

Postdi Statix » 26/11/14 20:51

Ora non ho capito se le query che ripeti (una volta al giorno?)

per quanto riguarda la ripetizione della query viene eseguita ogni giorno,
perché cambia la data,
esempio la prima query ha come data 20141101 (che corrisponde alla prima del mese)
la seconda con 20141102 etc etc. fino al giorno attuale,20141126
ho modificato la data con una variabile(A) e con un ciclo for 1 to ultima giorno,
la macro mi cicla tante volte quando sono i giorni trascorsi dall'inizio del mese ad oggi,
copiando i dati in archivio di tutti i giorni,ed una volta copiati , la query web continua ad aggiornarsi ogni 5 minuti,per il giorno attuale,
ecco il motivo perché dovevo pulire sia le connessioni che le query, altrimenti mi creavano qualche problema ogni volta che aggiornava,
attualmente con l'aggiunta della macro postata sopra, va tutto ok alla perfezione.
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta


Torna a Applicazioni Office Windows


Topic correlati a "Connessioni query web":


Chi c’è in linea

Visitano il forum: Lucio Peruggini e 3 ospiti

cron