Calcolo del Bollo auto (UDF con IE) Inviato da Roberto mercoledì 11 marzo 2009 Il Blog di Excelvba Due funzioni (anche UDF) per il calcolo del bollo auto. Utilizzano entrambe un collegamento al sito della agenzia delle entrate. Nella prima viene passata la targa, nella seconda i parametri per il calcolo. saluti r 'di Roberto Mensa Function Calcolo_Bollo_Ag_Entrate( _ ByVal starga As String, _ Optional lcategoria As Long = 1) As Variant 'senza riferimenti a: '"Microsoft Internet Controls" '"Microsoft HTML Object Library" 'lcategoria può assumere un valore da 1 a 3 '1-autoveicolo '2-motoveicolo '3-rimorchio 'sarebbe facile ottenere 'anche questi dati in questo caso relativi 'alla mia autovettura: 'Regione: Lombardia 'Cilindrata:1781 cc 'Potenza:110 KW 'Direttiva Euro:2 'Alimentazione: Benzina
'EcoDiesel: no 'Cavalli:18 'Posti:5 'Portata:425 kg 'Peso:1850 kg 'Numero Assi:2 'Categoria: autovettura 'Data immatricolazione:09/11/1999 'Codice uso:privato trasporto persone 'Dati relativi il pagamento: 'Riduzione: no 'Termine pagamento:30/09/2008 'Dati relativi al calcolo: ' 1 ed unica rata 'Scadenza:08/2009 'Mesi validità:12 'Tassa:322,00 'Interessi:4,28 'Sanzioni:9,66 'Totale:335,94 'infatti questo è il risultato 'dell'istruzione: 's = ' all("contenitore_gen"). _ ' innertext Dim myie As Object Dim s As String Dim myurl As String Dim RE As Object Dim M
'se usata come UDF 'l'aggiornamento della singola cella 'potrebbe richiedere alcuni istanti 'decommentare la riga qui sotto 'Application.Volatile False Set myie = CreateObject("InternetExplorer.Application") Set RE = CreateObject("VBScript.RegExp") myurl = _ "http://www1.agenziaentrate.it/servizi/bollo/calcolo/" & _ "propostapagamentosemplice.htm?targa=" & _ starga & _ "&tiposervizio=propostapagamentosemplice&categoria=0" & _ lcategoria myie.navigate myurl Do While myie.busy Or _ myie.readystate <> READYSTATE_COMPLETE DoEvents Loop s = all("contenitore_gen"). _ innertext Debug.Print s RE.Global = True RE.Pattern = _ "(Totale:)(\d+,\d+)" If RE.test(s) Then Set M = RE.Execute(s) Calcolo_Bollo_Ag_Entrate = _
CCur( _ RE.Replace(M(0), "$2")) Calcolo_Bollo_Ag_Entrate = _ "non disponibile" myie.quit Set myie = Nothing End Function Function Calcolo_Bollo_Potenza_Ag_Entrate( _ ByVal lpotenza As Long, _ Optional ByVal stipo As Boolean, _ Optional ldirettiva_euro As Long, _ Optional sregione As String = "Lombardia", _ Optional stipoveicolo As String = "Autoveicolo", _ Optional bgas_metano As Boolean) As Variant 'senza riferimenti a: '"Microsoft Internet Controls" '"Microsoft HTML Object Library" 'stipo se = true calcola la potenza 'in CV se = False o omesso in KW 'ldirettiva_euro può assumere i valori: '0,1,2,3,4,5 'sregione è il nome della regione 'escluso il trentino, indifferente 'il formato maiuscolo minuscolo 'ltipoveicolo può assumere i valori:
'autoveicolo 'motoveicolo 'ciclomotore 'bgas_metano =true se il veicolo è 'a metano o gpl Dim myie As Object Dim s As String Dim myurl As String Dim RE As Object Dim M 'se usata come UDF 'l'aggiornamento della singola cella 'potrebbe richiedere alcuni istanti 'decommentare la riga qui sotto 'Application.Volatile False Set myie = CreateObject("InternetExplorer.Application") Set RE = CreateObject("VBScript.RegExp") myurl = _ "http://www1.agenziaentrate.it/servizi/bollo/calcolo/kw_cv_ins.htm" myie.navigate myurl Do While myie.busy Or _ myie.readystate <> READYSTATE_COMPLETE DoEvents Loop all("pot").value = CStr(lPotenza)
If stipo Then all("tipo").value = "CV" If ldirettiva_euro < 0 Or _ ldirettiva_euro > 5 Then all("dirett").value = _ CStr(lDirettiva_euro) If LCase(sRegione) = "valle d'austa" Then sregione = "Valle d'aosta" sregione = StrConv(sRegione, vbpropercase) all("regione").value = sregione all("tipoveic").value = _ StrConv(sTipoVeicolo, vbpropercase) If bgas_metano Then all("gas").value = "si" myie.document.forms("ilform").submit Do While myie.busy Or _ myie.readystate <> READYSTATE_COMPLETE
DoEvents Loop RE.Global = True RE.Pattern = _ "(Euro:\s)(\d+,\d+)" s = all("outb"). _ innertext If RE.test(s) Then Set M = RE.Execute(s) Calcolo_Bollo_Potenza_Ag_Entrate = _ CCur( _ RE.Replace(M(0), "$2")) Calcolo_Bollo_Potenza_Ag_Entrate = _ "non disponibile" myie.quit Set myie = Nothing End Function