Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Download FE ricevute da ADE

326 views
Skip to first unread message

Bruno Campanini

unread,
May 31, 2019, 1:24:42 PM5/31/19
to
Con queste poche righe di codice VBA (che non sono farina
del mio sacco bensì farina del sacco di di casanmaner)
accedo a F&C dell'Agenzia delle Entrate alla videta dalla
quale eseguendo "Fatture elettroniche e altri dati IVA" dal
sub Menu "Consultazioni", ed eseguendo altresì un paio di
Ok e Prosegui, posso selezionare dal sub Menu "Fatture
Elettroniche" la procedura "Fatture elettroniche ricevute"
che mi porta appunto all'omonimo elenco.
Da qui, eseguendo il Dettaglio (ultima colonna a destra)
posso visualizzare il file PDF dell'SdI ed eseguire il
download dei due XML (Fattura e Metadati).
Vorrei, per ciascuna fattura elencata nella videata
precedente, poter scaricare i due XML e magari anche il PDF.

Allego il codice VBA della procedura di cui sopra ho narrato.
(quando l'ho installato funzionava solo con IE e non con Edge)
==================================
Sub AccessoFC()
Dim CF As String, PSW As String, PIN As String, _
INCARICANTE As String, t As Double, IEObject As Object

CF = Replace(ActiveCell(3, 1), " ", "")
PSW = ActiveCell(4, 1)
PIN = CStr(ActiveCell(5, 1))
INCARICANTE = Replace(ActiveCell(9, 1), " ", "")
t = 3

Set IEObject = CreateObject("InternetExplorer.Application")
IEObject.Visible = True
IEObject.Navigate "https://ivaservizi.agenziaentrate.gov.it/portale/"
Do Until IEObject.ReadyState = 4: Loop
With IEObject.Document
.all("username").Value = CF
.all("password").Value = PSW
.all("pin").Value = PIN
.Forms("login-form").submit: TimerDelay t
If INCARICANTE <> "" Then
.all("fm_incarichi").submit: TimerDelay t
.all("sceltaincarico").Value = INCARICANTE & "-FOL":
TimerDelay t
.all("fm_scelta_tipo_incarico").submit: TimerDelay t
.all("chekc_prosegui").Click: TimerDelay t
IEObject.Navigate
"https://ivaservizi.agenziaentrate.gov.it/portale/web/guest/home"
End If
End With

End Sub
==========================================

Bruno

casanmaner

unread,
Jun 1, 2019, 12:04:25 PM6/1/19
to
Ciao Bruno,
quello che chiedi, ad un certo punto, va oltre le mie possibilità :)
Nel senso che arrivo ad aprire la pagina del "dettaglio" e volendo a cliccare sui pulsanti.
Ma a quel punto si apre una barra per decidere se aprire o salvare il file e li mi blocco.
Non ho trovato un "link" al file al quale eventualmente puntare per eseguirne lo scaricamento.

Mi spiace.

Se vuoi ti posso postare il codice per arrivare fino a dove sono arrivato.
Ma poi, almeno per me, si arriva ad un "binario morto" :)

ciao

casanmaner

unread,
Jun 2, 2019, 1:37:00 PM6/2/19
to
Ritorno in argomento.
Un modo per "superare" l'ostacolo lo avrei trovato utilizzando "Application.SendKeys" eseguendo in pratica il "Salva".

Con il mio IE i file vengono salvati nella cartella "Download" dell'utente windows attivo.

Questo è un file dove in Foglio1 ho solo un pulsante.
Nel Modulo1 è presente il codice vba dove la routine "Accedi" serve per lanciare la routine principale di accesso "AccessoPortaleFattureCorrispettivi" a cui assegnare i parametri per accesso (utente, password, pin, utenza di lavoro in caso di accesso per un ente, eventuale partita iva principale in caso di soggetto con più partite iva possedute nel tempo).

Una terza routine è quella che esegue il download ed è nominata "DownloadFattureRicevute".

A questa routine vanno passati tre parametri (presi dalla precedente routine in cui viene richiamata). Va assegnato l'oggetto "Interenet", l'oggetto "Document", e la variabile del tempo di ritardo.
Nella routine di accesso troverai ad un certo punto queste righe di istruzione:

' accesso alla consultazione Fatture elettroniche e altri dati IVA
Call DownloadFattureRicevute(IEApp, IEApp.Document, iDelay)
'\ accesso alla consultazione Fatture elettroniche e altri dati IVA

che richiamano appunto la procedura di download assegnandogli i parametri necessari all'elaborazione.

La cosa funziona per la sola prima pagina dell'elenco delle fatture.
Non ho avuto modo di vedere il caso di più pagine e quindi non ho avuto modo di "analizzare" come intercettare questa eventualità.
Magari in studio, dove posso accedere a qualche cliente che ha un elevato numero di fatture posso provare a vedere se un modo c'è per passare tutte le pagine eventualmente presenti.

Non escludo che ogni tanto ti compaia un avviso di errore (che viene gestito) perché a volte, benché alla fine dal mio pc ho impostato almeno due secondi di ritardo, l'elaborazione è troppo veloce rispetto all'aggiornamento delle pagine.

Qui trovi il link al file:
https://www.dropbox.com/s/q1w2akjia4o4un8/Download%20FE%20ricevute%20da%20ADE.xlsm?dl=0

Questo il codice vba presente nel modulo1:


Option Explicit

#If VBA7 And Win64 Then
Public Declare PtrSafe Function ShowWindow Lib "user32.dll" (ByVal hwnd As LongPtr, ByVal nCmdShow As LongPtr) As LongPtr
#Else
Public Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
#End If

Sub Accedi()

Const sNominativoUtente As String = ""
Const sUtenteFisconline As String = "" 'Codice fiscale o utenza Entratel
Const sPassword As String = "" 'Password di accesso della persona fisica
Const sPin As String = "" 'Pin di accesso della persona fisica
Const sSoggettoIncaricante = "" 'Codice fiscale ente giuridico se accesso per conto dello stesso
Const sPIva As String = "" 'Partita iva del soggetto per cui si accede (persona fisica o ente incaricante)

Call AccessoPortaleFattureCorrispettivi(sNominativoUtente, _
sUtenteFisconline, _
sPassword, _
sPin, _
sPIva, _
sSoggettoIncaricante)
End Sub


Sub AccessoPortaleFattureCorrispettivi(Nominativo As String, _
Utente As String, _
Password As String, _
Pin As String, _
PARTITA_IVA As String, _
SOGGETTO_INCARICANTE As String)
'Dim iTimer: iTimer = Timer
Dim IEApp As Object 'InternetExplorer ' Object
Dim but As Object
Dim bLoginOK As Boolean
Dim Window As Object
Const iDelay As Double = 1 '1.5
Const URL As String = "https://ivaservizi.agenziaentrate.gov.it/portale/"
Application.StatusBar = Nominativo & ": Accesso Fatture & Corrispettivi in corso. Attendere ..."
'<--- verifico se è già aperta una sessione di internet explorer e nel caso chiudo la finestra --->
On Error Resume Next
For Each Window In CreateObject("shell.application").Windows
If Window.Name = "Internet Explorer" Then Window.Quit
Next Window
On Error GoTo Errore
Call TimerDelay(iDelay * 2)
'<--- creo una nuova sessione di internet explorer e carico i dati per accedere a Fatture e corrispettivi --->
Set IEApp = CreateObject("InternetExplorer.Application") 'New InternetExplorer '
On Error Resume Next
With IEApp
.Silent = True
'ShowWindow .hwnd, 3 'Finestra massimizzata
.navigate URL
Do Until .ReadyState = 4: TimerDelay iDelay: Loop
With .Document
.all("username").Value = Utente
.all("password").Value = Password
.all("pin").Value = Pin
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
.all("login-form").submit
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
For Each but In .GetElementsByClassName("btn btn-primary")
If Trim(but.InnerText) = "Esci" Then
bLoginOK = True
Exit For
End If
Next but
If bLoginOK Then
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
Select Case SOGGETTO_INCARICANTE
Case ""
.all("fm_mestesso").submit
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
.all("sceltapiva").Value = PARTITA_IVA
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
.all("fm_scelta_piva").submit
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
Case Else
.all("fm_incarichi").submit ' <--- seleziono l'opzione Incaricato
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
If InStr(SOGGETTO_INCARICANTE, "-") = 0 Then
SOGGETTO_INCARICANTE = SOGGETTO_INCARICANTE & "-FOL"
End If
.all("sceltaincarico").Value = SOGGETTO_INCARICANTE ' <--- inserisco l'incaricante
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
.all("incaricodirettoradio").Click
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
.all("fm_scelta_tipo_incarico").submit ' do Ok al pulsante della partita iva del cliente
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
.all("sceltapiva").Value = PARTITA_IVA
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
.all("fm_scelta_tipo_incarico_piva").submit
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
End Select
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
End If
End With '.Document
If bLoginOK Then
Do Until .ReadyState = 4: TimerDelay iDelay: Loop
On Error GoTo Errore
'=============
.navigate URL & "home"
Do Until .ReadyState = 4: TimerDelay iDelay: Loop

' accesso alla consultazione Fatture elettroniche e altri dati IVA
Call DownloadFattureRicevute(IEApp, IEApp.Document, iDelay)
'\ accesso alla consultazione Fatture elettroniche e altri dati IVA

Call TimerDelay(iDelay)
Else
.Quit
MsgBox "Login non riuscito. Verificare i dati di accesso.", vbExclamation, "Login non riuscito"
End If
End With 'IEApp
RiprendiErrore:
Application.StatusBar = False
Set Window = Nothing
Set IEApp = Nothing
Exit Sub
Errore:
Select Case Err.Number
Case -2147023706
MsgBox "Errore n. " & Err.Number & vbNewLine & _
Err.Description & vbNewLine & _
"L'applicazione Internet Explorer non ha completato la chisura definitiva." & vbNewLine & _
"Attendere qualche secondo e riprovare l'accesso!", _
vbCritical, "Errore Accesso"
Case Else
MsgBox "Si è verificato un errore imprevisto!" & vbNewLine & _
"Errore n. " & Err.Number & vbNewLine & _
Err.Description, vbCritical, "Errore VBA imprevisto"
End Select
Resume RiprendiErrore
End Sub

Sub DownloadFattureRicevute(oIE As Object, oDoc As Object, iDelay As Double)
Dim oLinkSpa As Object, obj As Object
Dim str As String, cont As Long
Dim oTable As Object, oRows As Object, oCol As Object
iDelay = iDelay + 1
With oIE
ShowWindow .hwnd, 3 'Finestra massimizzata
With .Document
Set oLinkSpa = .GetElementsByClassName("link_spa")
str = oLinkSpa(4).href
End With
.navigate str & "#/fatture/ricevute"
Do Until .ReadyState = 4: TimerDelay iDelay: Loop
With .Document
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
For Each obj In .GetElementsByTagName("a")
obj.onclick
Next obj
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
TimerDelay iDelay
For Each obj In .GetElementsByTagName("button")
If obj.InnerText = "Accetta e prosegui" Then
obj.Click
End If
Next obj
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
End With
.navigate str & "#/fatture/ricevute"
Do Until .ReadyState = 4: TimerDelay iDelay: Loop
With .Document
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
Set oTable = .GetElementsByTagName("Table")(0)
End With
Set oRows = oTable.GetElementsByTagName("tr")
For Each obj In oRows
If cont > 0 Then
Set oCol = obj.GetElementsByTagName("td")(11).GetElementsByTagName("a")(0)
.navigate oCol.href
Do Until .ReadyState = 4: TimerDelay iDelay: Loop
TimerDelay iDelay
With .Document
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
.GetElementsByClassName("btn btn-primary")(1).Click
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
TimerDelay iDelay
Application.SendKeys "%S"
TimerDelay iDelay
.GetElementsByClassName("btn btn-primary")(2).Click
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
TimerDelay iDelay
Application.SendKeys "%S"
End With
End If
cont = cont + 1
Next obj
.Quit
End With
MsgBox "Download terminato"
End Sub

Sub TimerDelay(Optional Delay As Double)
Const vDelay As Double = 0.25
Dim vTimer As Double
If Delay = 0 Then Delay = vDelay
vTimer = Timer
Do While Timer < vTimer + Delay: Loop
End Sub




PINO P.

unread,
Jun 19, 2019, 11:41:24 AM6/19/19
to
Ciao Casanmaner, anch'io ero fermo alla fase precedente il download. Grazie al tuo codice sono riuscito a fare il download delle fatture emesse (nel mio caso). Sono andato oltre in quanto riesco a gestire più pagine. Di seguito la porzione di codice che scarica le fatture della 1^ pagina e successive. Ovviamente alcune variabili sono diverse dalle tue ma la sostanza non cambia.

' Routine casanmaner (gruppo Google)

Set myTab = IE.document.getElementsByTagName("Table")(0) ' Tabella
Set tRtR = myTab.getElementsByTagName("tr") ' Righe

For Each obj In tRtR
If cont > 0 Then
Set oCol = obj.getElementsByTagName("td")(11).getElementsByTagName("a")(0)
IE.navigate oCol.href
Delay 4
IE.document.getElementsByClassName("btn btn-primary")(1).Click ' Download Fattura
Delay 3
Application.SendKeys "%s", True
Delay 3
Application.SendKeys "%q", True
Delay 1
'IE.document.getElementsByClassName("btn btn-primary")(2).Click ' Download Metadati
'Delay 3
'Application.SendKeys "%s", True
'Application.SendKeys "%q", True
'Delay 1
End If
cont = cont + 1
Next obj

Application.SendKeys "{NUMLOCK}", True

IE.document.getElementsByClassName("fa fa-chevron-left")(0).Click ' Ritorno alla pagina 1
Delay 2

Pagina = 1
cont = 1

' Di seguito il ciclo DO / LOOP per download fatture dalle eventuali pagine successive alla prima

Do

If TotPagine = Pagina Then Exit Do ' TotPagine è il numero di pagine totali che mi sono ricavato precedentemente

IE.document.getElementsByClassName("fa fa-angle-right fa-lg")(0).Click ' Clicca sul pulsante "Pagina successiva"

Application.SendKeys "{F5}", True ' Refresh pagina (se non faccio il refresh la procedura si blocca)
Set myTab = IE.document.getElementsByTagName("Table")(0) ' Tabella
Set tRtR = myTab.getElementsByTagName("tr") ' Righe

For Each obj In tRtR
If cont > 0 Then

Set oCol = obj.getElementsByTagName("td")(11).getElementsByTagName("a")(0)
IE.navigate oCol.href
Delay 4
IE.document.getElementsByClassName("btn btn-primary")(1).Click ' Download Fattura
Delay 3
Application.SendKeys "%s", True
Delay 3
Application.SendKeys "%q", True ' chiude la barra di salvataggio (se la Q è maiuscola non funziona ... stranezze)
Delay 1
' ** Non mi interessa scaricare il file di Metadati
'IE.document.getElementsByClassName("btn btn-primary")(2).Click ' Download Metadati
'Delay 3
'Application.SendKeys "%s", True
'Application.SendKeys "%q", True
'Delay 1

End If
cont = cont + 1
Next obj

Application.SendKeys "{NUMLOCK}", True ' Nel mio caso ripristina il NumLock

Pagina = Pagina + 1
cont = 1

Loop

' ** Fine

IE.Quit
Set IE = Nothing
Set obj = Nothing
Set myTab = Nothing
Set oCol = Nothing

Range("A2").Select
Sheets("Foglio1").Activate

MsgBox ("Download fatture completato !")

La procedura risulta essere un pò lenta a causa dei tanti voluti ritardi di tempo. Credo, comunque, che ci sia un metodo più veloce e che non faccia ricorso ai SendKeys. Forse qualche programmatore seriale è in ascolto e può dare un contributo

casanmaner

unread,
Jun 20, 2019, 6:04:45 PM6/20/19
to
Ciao Pino,
in verità anche io avevo impostato la ricerca su più pagine ma avendo avuto diversi impegni avevo accantonato.
Comunque inserisco il link al file con il codice fin dove ero arrivato (vedrai che i "sendkey" sono anticipati dall'apostrofo per non far scaricare i file nelle prove (dove eseguivo il ciclo solo per vedere se ci si spostava nelle pagine senza però scaricare effettivamente i file).
Vedi tu se ti può essere di spunto o meno.

https://www.dropbox.com/s/deppir99b0ngk42/Download%20FE%20ricevute%20da%20ADE%20%282%29.xlsm?dl=0

ciao

mauriz...@infinito.it

unread,
Jan 5, 2020, 1:17:07 PM1/5/20
to
Il giorno domenica 2 giugno 2019 19:37:00 UTC+2, casanmaner ha scritto:
Ciao casanmaner
e p/c Bruno e Pino,

considerando lo splendido lavoro di mesi fa...se invece di andare alla "consultazione Fatture elettroniche e altri dati IVA" volessi puntare a "Dati Fatture e Comunicazioni IVA" e poi "Dati delle fatture" e quindi "Trasmissione" e magari x poter trasmettere, automaticamente, il mio file "ITLGURSS80A01A794Y_GEN20.zip" presente sul Desktop del mio pc ?

E' possibile ?
Grazie

Maurizio

casanmaner

unread,
Jan 9, 2020, 3:43:49 AM1/9/20
to
Non ho mai "approfondito" questa possibilità perché in realtà ritengo, e anzi applico, più semplice crare un codice che in automatico invii una email tra indirizzi pec.

mauriz...@infinito.it

unread,
Jan 10, 2020, 12:48:26 PM1/10/20
to
> Non ho mai "approfondito" questa possibilità perché in realtà ritengo, e anzi applico, più semplice creare un codice che in automatico invii una email tra indirizzi pec.

Purtroppo in devo inviare le FE in ADE manualmente tramite portale e NON by pec... cmq arrivare a "Trasmissione" tramite 'scraping' della pagina HTML qualcuno lo sa fare ?


Grazie
Maurizio

casanmaner

unread,
Jan 10, 2020, 2:27:37 PM1/10/20
to
Per arrivare alla pagina, dopo aver fatto l'accesso a F&C, devi "navigare" questa url:

"https://ivaservizi.agenziaentrate.gov.it/ser/fatturewizard/#/trasmissione"

Poi però l'inserimento in automatico del file credo risulti essere difficoltoso.

mauriz...@infinito.it

unread,
Jan 11, 2020, 3:07:09 AM1/11/20
to
Bene... ora devo solo capire come fargli cliccare sul bottone "SFOGLIA" ed
INSERIRE la stringa: "C:\FT2020\ITLGURSS80A01A794Y_GEN20.zip" e cliccare "INVIA"

GRAZIE 1000...

mauriz...@infinito.it

unread,
Mar 15, 2020, 10:21:37 AM3/15/20
to
Torno su utile programma...
purtroppo in automatico mi salva (esporta) solo la prima fattura (le altre le processa) ma NON le salva.
Chissà perchè???
Mauriizo

mauriz...@infinito.it

unread,
Mar 15, 2020, 4:45:44 PM3/15/20
to
... Affinché vengano realmente scaricate devo cliccare MANUALMENTE ogni volta sul bottone salva (forse non funziona il .focus ?)

mauriz...@infinito.it

unread,
Mar 16, 2020, 3:48:05 PM3/16/20
to
Fondamentalmente su IE 11 il comando:

alt+S

Application.SendKeys Keys:="%s", Wait:=True

è inefficace

lo è solo

alt+Q

Application.SendKeys Keys:="%q", Wait:=True

casanmaner

unread,
Mar 17, 2020, 1:56:47 AM3/17/20
to
Ciao,
personalmente utilizzando "%s" le fatture vengono scaricate.

Con questa routine, alla quale dopo aver effettuato l'accesso di un determinato soggetto, assegno alcuni argomenti riesco a scaricare le fatture emesse (anche quelle c.d. transfrontaliere), le fatture di acquisto e volendo il file dei metadati:

Sub DownloadFatture(oIE As Object, _
iDelay As Double, _
DataDal As String, _
DataAl As String, _
sTipoFatture As String, _
Optional bMetaDati As Boolean = False)
Dim oLinkSpa As Object, obj As Object
Dim str As String, cont As Long, cont2 As Long
Dim oPage As Object
Dim oTable As Object, oRows As Object, oCol As Object
Dim v As Variant
Dim sUrlTipoFatture As String
Dim arrURL As Variant, v2 As Variant
Dim ContPage As Long
Dim ContNonDisp As Long

iDelay = iDelay
Select Case UCase(sTipoFatture)
Case "EMESSE"
sUrlTipoFatture = "#/fatture/emesse,#/transfrontaliere/emesse"
Case "RICEVUTE"
sUrlTipoFatture = "#/fatture/ricevute"
End Select

Dim iTimer: iTimer = Timer

On Error GoTo Errore
With oIE
.Silent = True
'.Visible = True
TimerDelay iDelay
With .Document
Set oLinkSpa = .GetElementsByClassName("link_spa")
For Each v In oLinkSpa
If v.innertext = "Fatture elettroniche e altri dati IVA" Then
str = v.href
Exit For
End If
Next v
End With
For Each v2 In Split(sUrlTipoFatture, ",")
.Navigate2 str & v2 'sUrlTipoFatture
Do Until .ReadyState = 4: TimerDelay iDelay: Loop
With .Document
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
TimerDelay iDelay
For Each obj In .GetElementsByTagName("a")
On Error Resume Next
obj.onclick
On Error GoTo Errore
Next obj
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
TimerDelay iDelay
For Each obj In .GetElementsByTagName("button")
If obj.innertext = "Accetta e prosegui" Then
obj.Click
End If
Next obj
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
End With
.Navigate2 str & v2 'sUrlTipoFatture
'ShowWindow .hwnd, 3 'Finestra massimizzata
Do Until .ReadyState = 4: TimerDelay iDelay: Loop
TimerDelay iDelay
With .Document
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
.all("dal").Focus
.all("dal").innertext = DataDal
.all("al").Focus
.all("al").innertext = DataAl
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
For Each obj In .GetElementsByClassName("btn btn-primary ng-binding")
If Trim(obj.innertext) = "Cerca" Then
obj.Focus
obj.Click
Exit For
End If
Next obj
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
End With
'.FullScreen = True
Do Until .ReadyState = 4: TimerDelay iDelay: Loop
TimerDelay iDelay * 3
ShowWindow .hwnd, 3 'Finestra massimizzata
ContPage = 1
For Each oPage In .Document.GetElementsByClassName("sr-only")
If Trim(oPage.innertext) = "Elenco delle fatture pagina" Then
If ContPage > 1 Then
'Pagine successive alla prima
.Navigate2 str & v2 'sUrlTipoFatture
Do Until .ReadyState = 4: TimerDelay iDelay: Loop
TimerDelay iDelay
With .Document
Set obj = .GetElementsByClassName("fa fa-angle-right fa-lg")(0)
obj.Click
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
End With
Do Until .ReadyState = 4: TimerDelay iDelay: Loop
TimerDelay iDelay * 3
End If
With .Document
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
TimerDelay iDelay
Set oTable = .GetElementsByTagName("Table")(0)
End With
Set oRows = oTable.GetElementsByTagName("tr")
For Each obj In oRows
If cont > 0 Then
cont2 = cont2 + 1
Select Case v2
Case "#/fatture/emesse", "#/fatture/ricevute"
Set oCol = obj.GetElementsByTagName("td")(11).GetElementsByTagName("a")(0)
Case "#/transfrontaliere/emesse"
Set oCol = obj.GetElementsByTagName("td")(10).GetElementsByTagName("a")(0)
End Select
.Navigate2 oCol.href
Do Until .ReadyState = 4: TimerDelay iDelay: Loop
TimerDelay iDelay
With .Document
'File Fatture
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
Set obj = .GetElementsByClassName("btn btn-primary")(1)
If Not obj Is Nothing Then
obj.Click
Else
ContNonDisp = ContNonDisp + 1
End If
TimerDelay iDelay * 5
.Focus
TimerDelay
Application.SendKeys Keys:="%s", Wait:=True
TimerDelay iDelay * 2
.Focus
TimerDelay
Application.SendKeys Keys:="%q", Wait:=True
'File MetaDati
If bMetaDati Then
Do Until .ReadyState = "complete": TimerDelay iDelay: Loop
Set obj = .GetElementsByClassName("btn btn-primary")(2)
If Not obj Is Nothing Then
obj.Click
Else
' do nothing
End If
TimerDelay iDelay * 2
.Focus
TimerDelay
Application.SendKeys Keys:="%s", Wait:=True
TimerDelay iDelay * 2
.Focus
TimerDelay
Application.SendKeys Keys:="%q", Wait:=True
End If
End With
End If
cont = cont + 1
Next obj
ContPage = ContPage + 1
End If ' Trim(oPage.InnerText) = "Elenco delle fatture pagina"
cont = 0
Next oPage
Next v2
RiprendiErrore:

Application.SendKeys Keys:="{NUMLOCK}", Wait:=True
.Quit
End With

'Debug.Print "Tempo impiegato in minuti: " & Application.Round((Timer - iTimer) / 60, 6)
'Debug.Print "Conteggio pagine: " & ContPage

If cont2 > 0 Then
MsgBox "Download terminato!" & vbNewLine & _
"Sono state trovate " & cont2 & " fatture." & vbNewLine & _
"Tra le fatture trovate quelle non ancora disponibili per il download sono risultate essere: " & ContNonDisp & vbNewLine & _
"Verificare che il numero di file scaricati corrisponda al numero di fatture trovate con esclusione di quelle non disponibili.", vbInformation, "Download Fatture"
Else
MsgBox "Non sono state trovate fatture per l'intervallo di date impostato!", vbInformation, "Download Fatture"
End If

Set oLinkSpa = Nothing
Set obj = Nothing
Set oPage = Nothing
Set oTable = Nothing
Set oRows = Nothing
Set oCol = Nothing

Exit Sub
Errore:
MsgBox "Si è verificato un errore imprevisto!" & vbNewLine & _
"Errore n. " & Err.Number & vbNewLine & _
Err.Description, vbCritical, "Errore VBA Imprevisto"
Resume RiprendiErrore
End Sub

casanmaner

unread,
Mar 17, 2020, 1:58:49 AM3/17/20
to
A iDelay ho assegnato il valore di 1 (un secondo quindi).

mauriz...@infinito.it

unread,
Mar 17, 2020, 7:11:47 AM3/17/20
to
Il giorno martedì 17 marzo 2020 06:58:49 UTC+1, casanmaner ha scritto:
> A iDelay ho assegnato il valore di 1 (un secondo quindi).

Grazie, Grazie, Grazie casanmaner!!!
Ora ho capito che funziona su WIN10 e purtroppo NON sul vecchio Win7!!!
Purtroppo in azienda abbiamo postazioni che ancora montano il vecchio sistema;
Non è per caso ha modo di adattare/testare il tuo splendido lavoro anche su macchine con Win7?

thnks Mau

casanmaner

unread,
Mar 17, 2020, 7:17:09 AM3/17/20
to
Io lo uso su Win7 .....

mauriz...@infinito.it

unread,
Mar 17, 2020, 9:36:50 AM3/17/20
to
Ma caspita, che cosa succede dunque di diverso ???!!!

casanmaner

unread,
Mar 17, 2020, 10:19:35 AM3/17/20
to
Sinceramente non saprei.
Da noi viene usato su più macchine tutte con win7.
Prova magari ad aumentare il tempo di ritardo delle esecuzioni a 1,5 secondi.

mauriz...@infinito.it

unread,
Mar 17, 2020, 12:28:31 PM3/17/20
to
eRMANNo hai per caso il file 'completo' a disposizione free anche con le ultime interessanti integrazioni di cui sopra?

sempre... grazie
Message has been deleted

mauriz...@infinito.it

unread,
Mar 17, 2020, 4:12:23 PM3/17/20
to
Penso allora sia excel 2007; il 2010 ed il 365 sembrano andar bene;
anche se talvolta (pur con excel > 2007) rilevo dei problemi sul range di scelta tra le date; "NON TROVA NULLA" mentre invece vi sono dei dati.

casanmaner

unread,
Mar 17, 2020, 4:22:59 PM3/17/20
to
Io uso Excel 2007.
Hai ricevuto un messaggio privato?

mauriz...@infinito.it

unread,
Mar 17, 2020, 4:45:48 PM3/17/20
to
Il giorno martedì 17 marzo 2020 21:22:59 UTC+1, casanmaner ha scritto:
> Io uso Excel 2007.

> Hai ricevuto un messaggio privato? Purtroppo no (meglio qui: lelio[punto]bertanichiocciolalibero(punto)italia)

mau1791

unread,
Dec 19, 2021, 6:05:19 AM12/19/21
to
Il giorno martedì 17 marzo 2020 alle 21:45:48 UTC+1 ma...nito.it ha scritto:
> Il giorno martedì 17 marzo 2020 21:22:59 UTC+1, casanmaner ha scritto:
> > Io uso Excel 2007.

Ciao
in previsione della dismissione di Explorer per Edge come sarà possibile continuare ad utilizzare l'UTILISSIMO codice di cui sopra in futuro?
Grazie Maurizio

casanmaner

unread,
Dec 20, 2021, 1:29:09 PM12/20/21
to
In windows10 ancora funziona e nel caso in cui Edge si "intrometta" occorre modificare le ipostazioni in modo che se lanciato IE non venga lanciato in sua vece Edge.

Per Windows11 a meno che non creino in futuro delle librerie per Edge simili a quelle di IE credo che l'unica soluzione sia installare IE anche su Windows11 per avere le librerie.
Io non ho ancora avuto modo di vedere se sia possibile ma in teoria dovrebbe.

Bruno Campanini

unread,
Dec 23, 2021, 3:37:13 PM12/23/21
to
casanmaner formulated on Monday :
> Il giorno domenica 19 dicembre 2021 alle 12:05:19 UTC+1 mau1791 ha scritto:
>> Il giorno martedì 17 marzo 2020 alle 21:45:48 UTC+1 ma...nito.it ha scritto:
>>> Il giorno martedì 17 marzo 2020 21:22:59 UTC+1, casanmaner ha scritto:
>>>> Io uso Excel 2007.
>> Ciao
>> in previsione della dismissione di Explorer per Edge come sarà possibile
>> continuare ad utilizzare l'UTILISSIMO codice di cui sopra in futuro? Grazie
>> Maurizio
>
> In windows10 ancora funziona e nel caso in cui Edge si "intrometta" occorre
> modificare le ipostazioni in modo che se lanciato IE non venga lanciato in
> sua vece Edge.

Per fare ciò?
-------------
1 - Open the EDGE Browser
2 - Type “edge://settings/defaultbrowser” in the address bar
and press Enter.
3 - Select “Never” from the “Let Internet Explorer open sites in
Microsoft Edge” dropdown menu
4 - Settings all saved automatically.
5 - Restart the Edge browser.
>
Bruno

casanmaner

unread,
Dec 28, 2021, 3:30:16 AM12/28/21
to
Sì, dovrebbero essere quelle impostazioni. Ma non impostare EDGE come browser predefinito.

Bruno Campanini

unread,
Dec 28, 2021, 10:40:46 AM12/28/21
to
casanmaner was thinking very hard :
Io invece imposto EDGE come predefinito!

Bruno

mau1791

unread,
Jan 22, 2022, 9:19:08 AM1/22/22
to
Una info inerente a quanto sopra: se recentemente un utente avesse ottenuto l'abilitazione a Fisco online con lo spid (senza psw) a costui non sarà più possibile accedere all'automatismo di cui sopra per scaricare le FE?
Maurizio
0 new messages