Ciao e benvenuto anche da parte mia.
Premesso che ci sono 100 modi per fare le stesse cose, volendo rimanere nella web query si potrebbe usare il suo evento AfterRefresh, tramite l' uso di un codice come questo:
- Codice: Seleziona tutto
Public WithEvents qt As QueryTable
Private Sub qt_AfterRefresh(ByVal Success As Boolean)
If Not Success Then Exit Sub
Dim LastSh2 As Long
'
LastSh2 = Sheets("Foglio2").Cells(Rows.Count, 2).End(xlUp).Row
'
With Sheets("Foglio2").Cells(LastSh2 + 3, 2)
.Value = Now()
.Interior.ColorIndex = 4
.Font.Bold = True
End With
With Sheets("Foglio1")
.Range("$Z$1:$AB$1000").AutoFilter Field:=1, Criteria1:=">=0"
.Range("$Z$1:$AB$1000").AutoFilter Field:=3, Criteria1:=">=0"
.Range("A2:AB1000").SpecialCells(xlCellTypeVisible).Copy _
Destination:=Sheets("Foglio2").Cells(LastSh2 + 4, 1)
End With
'Beep
'Foglio2.Range("AD1").Value = Foglio2.Range("AD1").Value + 1
End Sub
Private Sub Worksheet_Activate()
Set qt = Nothing
DoEvents
Set qt = Sheets("Foglio1").Range("B2").QueryTable
End Sub
Va inserito nel "Modulo di codice" di Foglio1:
-tasto dx sul tab col nome Foglio1, scegli Visualizza codice
-copia il codice e incollalo nel frame vuoto di dx; la riga Public WithEvents deve essere in testa al modulo, prima di qualsiasi istruzione.
La prima macro e' la vera gestione all' evento; prevede il filtro delle colonne Z e AB come descritto nei messaggi, poi la copia e l' accodamento a quanto gia' scritto in Foglio2
La seconda macro, Sub Worksheet_Activate, serve ad impostare l' evento e quindi avviare il processo; che quindi per essere avviato prevede che il Foglio1 divenga attivo (da non attivo); e' una scelta arbitraria, si potrebbe anche farlo nella WorkbookOpen...
Spero che possa essere di qualche utilita'.
Ciao