› Sviluppare funzionalita su Microsoft Office con VBA › Selezione di due links per attivazione specifiche schede .
-
AutoreArticoli
-
Ciao a tutti. Il problema è di aprire le relative schede titoli facendo doppio click sull'isin specifico. Dovè il problema ? Come da esempio se ho una colonna di appoggio con la sigla T (Tlx) o M (Mot) , ovvero con l'indicazione del catalogo nel quale risiedono i titoli la ricerca è facile e immediata con la macro sotto riportata .
MA, se non ho alcuna indicazione del catalogo in cui trovasi il titolo , ovvero non ho nè la T nè la M , come posso fare una scansione dei due links tenuto conto che comunque entrambi i links sono funzionanti e aprono comunque una pagina ? Quale riscontro posso inventare per dire, via VBA, che quell'Isin cercato NON è in questo catalogo ma che andrà cercato nell'altro ?
Operativamente dal file allegato se lasciate i riferimenti di colonna C , tutto Ok ma se li togliete ? ecco quanto vorrei fare .
`Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'esegue un aggiornamento singolo a B.Ita col doppio click su un ISIN Dim R As Integer, C As Integer Dim Link As String R = Target.Row C = Target.Column Call ControllaISIN If R > 1 Then If Cells(R, 3) = "T" Then Link = "https://www.borsaitaliana.it/borsa/obbligazioni/eurotlx/dati-completi.html?isin=" & Cells(R, 1).Text & "&lang=it" On Error Resume Next ActiveWorkbook.FollowHyperlink Link, , True ElseIf Cells(R, 3) = "M" Then Link = "https://www.borsaitaliana.it/borsa/obbligazioni/mot/obbligazioni-in-euro/dati-completi.html?isin=" & Cells(R, 1).Text & "&lang=it" On Error Resume Next ActiveWorkbook.FollowHyperlink Link, , True Exit Sub Else MsgBox "Mancano i dati !" End If End If End Sub`Allegati:
You must be logged in to view attached files.ciao,
se ho capito correttamente, piccola modifica alla tua sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'esegue un aggiornamento singolo a B.Ita col doppio click su un ISIN Dim R As Integer, C As Integer Dim Link As String R = Target.Row C = Target.Column Call ControllaISIN If R > 1 Then If Cells(R, 3) = "T" Then callT (R) ElseIf Cells(R, 3) = "M" Then callM (R) Else callT (R) Application.Wait Now + TimeValue("00:00:03") callM (R) Exit Sub 'MsgBox "Mancano i dati !" End If End If End Sub Sub callT(R) Link = "https://www.borsaitaliana.it/borsa/obbligazioni/eurotlx/dati-completi.html?isin=" & Cells(R, 1).Text & "&lang=it" On Error Resume Next ActiveWorkbook.FollowHyperlink Link, , True End Sub Sub callM(R) Link = "https://www.borsaitaliana.it/borsa/obbligazioni/mot/obbligazioni-in-euro/dati-completi.html?isin=" & Cells(R, 1).Text & "&lang=it" On Error Resume Next ActiveWorkbook.FollowHyperlink Link, , True End SubAllegati:
You must be logged in to view attached files.Grazie @lukereds
la tua macro funziona perfettamente quando nella colonna C ci sono i riferimenti (T & M) ma se inserisci una colonna vuota in C funziona altrettanto bene ma, per il mot la scheda compare dopo tre secondi e resta presente e consultabile ; mentre per il tlx la scheda compare subito e poi dopo tre secondi scompare.
Ora, vero che posso agire sui secondi di pausa, però considera che l'apertura di queste schede video è per rilevare o copiare dati quindi operazioni manuali anche dilazionate nel tempo . quindi sarebbe utile se aprisse senza alcuna funzione tempo. .
ciao,
l'istruzione Application.Wait Now + TimeValue("00:00:03") (che, ho visto, può essere tolta), serviva per dare tempo prima di caricare la nuova pagina.
I due link rimangono attivi, sia per M che per T, non ti risulta? Una delle 2 schede contiene i dati del titolo, l'altra è come in figura
Allegati:
You must be logged in to view attached files.si, hai ragione ma non mi ero accorto che su Bing comparivano tutte le schede aperte, valide e non, sul lato sx. Qui il codice semplificato
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'esegue un aggiornamento singolo a B.Ita col doppio click su un ISIN Dim R As Integer, C As Integer Dim Link As String R = Target.Row C = Target.Column Call ControllaISIN If R > 1 Then callT (R) callM (R) Exit Sub 'MsgBox "Mancano i dati !" 'End If End If End Sub
Ciao a tutti
Ottimo lavoro, ragazzi. Ma io non sono così bravo con lo "scraping" e vi chiedo:
se volessi, in una cella di un foglio excel, solo la quotazione come dovrei fare? Cioè, nell'immagine allegata da @gianca53 si nota una quotazione vicino alla percentuale. Mi interessa quella. So benissimo che alcuni siti chiedono un'autorizzazione ma a me serve solo per uso personale e non commerciale.
Grazie a chi vorrà dedicarmi un po' del suo tempo.
Ciao,
Mario
Ciao Marius tutto bene?
Questo il codice che scarica nome del titolo e quotazione, non molto utile perchà scarica solo quello, è possibile comunque agire con un elenco di titoli e relativi link
Nell'immagine le librerie da abilitare
Sub titoloX() Dim XMLReq As New MSXML2.XMLHTTP60 Dim doc As New MSHTML.HTMLDocument Dim elems As MSHTML.IHTMLElementCollection Dim elem As MSHTML.IHTMLElement Dim sitow As String Cells.Clear sitow = "https://www.borsaitaliana.it/borsa/obbligazioni/mot/obbligazioni-in-euro/dati-completi.html?isin=IT0006526609&lang=it" XMLReq.Open "GET", sitow, False XMLReq.Send doc.body.innerHTML = XMLReq.responseText Set elem = doc.getElementsByClassName("t-text -flola-bold -size-xlg -inherit")(0) Range("A1") = elem.innerText Set elem = doc.getElementsByClassName("t-text -black-warm-60 -formatPrice")(0) Range("A2") = elem.innerText End SubAllegati:
You must be logged in to view attached files. -
AutoreArticoli

