Sviluppare funzionalita su Microsoft Office con VBA Selezione di due links per attivazione specifiche schede .

Login Registrati
Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
  • Autore
    Articoli
  • #54764 Score: 0 | Risposta

    gianca53
    Partecipante

      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.
      #54766 Score: 0 | Risposta

      LukeReds
      Partecipante
        19 pts

        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 Sub
        
        Allegati:
        You must be logged in to view attached files.
        #54768 Score: 0 | Risposta

        gianca53
        Partecipante

          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. . 

           

          #54769 Score: 0 | Risposta

          LukeReds
          Partecipante
            19 pts

            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.
            #54771 Score: 0 | Risposta

            gianca53
            Partecipante

              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
              

               

              #54772 Score: 0 | Risposta

              Marius44
              Moderatore
                58 pts

                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

                #54773 Score: 0 | Risposta

                gianca53
                Partecipante

                  Ciao Marius, ti interessano obbligazioni o azioni o entrambi  ?

                  #54774 Score: 0 | Risposta

                  LukeReds
                  Partecipante
                    19 pts

                    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 Sub

                     

                    Allegati:
                    You must be logged in to view attached files.
                    #54776 Score: 0 | Risposta

                    gianca53
                    Partecipante

                      Marius in allegato ti invio il file .bas da importare in un file excel, per ottenere quanto sotto . Da mettere in un modulo std. 

                      Allegati:
                      You must be logged in to view attached files.
                    Login Registrati
                    Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
                    Rispondi a: Selezione di due links per attivazione specifiche schede .
                    Gli allegati sono permessi solo ad utenti REGISTRATI
                    Le tue informazioni: