Condividi:        

Rimuovere testo e cifre da stringa alfanumerica + spazi

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Rimuovere testo e cifre da stringa alfanumerica + spazi

Postdi Gianca532011 » 03/01/23 11:51

Ciao e Buon anno.
Ho questa macro che scarica gli indici di borsa , funziona quasi bene eccetto il fatto che in colonna B mi produce una stringa della quale mi serve solo una parte che può essere quella iniziale o quella finale (identiche) . Ma non so come ottenere tale risultato in VBA . Ho trovato una macro annulla spazi ma non è adeguata al problema . Suggerimenti ?

https://postimg.cc/F1fsHWpj]Immagine

Codice: Seleziona tutto
Sub Importa_Dati_Web()
    Dim HTML_Content As Object
    Dim Tr As Object, Td As Object, iTab As Object
    Dim Nome, iRow As Long, iCol As Integer
    Application.ScreenUpdating = False
    Cells.Clear
   
    Const Web_URL = "https://www.borsaitaliana.it/borsa/azioni/tutti-gli-indici.html"
    Set HTML_Content = CreateObject("htmlfile")
    With CreateObject("msxml2.xmlhttp")
        .Open "GET", Web_URL, False
        .send
        HTML_Content.body.innerHTML = .responseText
    End With
    iRow = 1: iCol = 2
    For Each iTab In HTML_Content.getElementsByTagName("table")
        For Each Tr In iTab.Rows
            For Each Td In Tr.Cells
                If iCol = 1 And iRow > 1 Then
                    Nome = Split(Td.innerText) '.Chr(13)
                    Cells(iRow, iCol) = Nome(LBound(Nome))
                    iCol = iCol + 1
                Else
                    Cells(iRow, iCol) = Td.innerText
                    iCol = iCol + 1
                End If
            Next Td
            iCol = 2
            iRow = iRow + 1
        Next Tr
        iCol = 2
        iRow = iRow + 1
    Next iTab
     Dim sh As Worksheet
     Set sh = Sheets("Foglio1")
         'uR = Cells(Rows.Count, 1).End(xlUp).Row
   ' Range("A2:A" & uR).SpecialCells(xlCellTypeBlanks).Offset(1, 0).EntireRow.Delete
'Range("A2:A" & uR).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

    Application.ScreenUpdating = True
    Cells.EntireColumn.AutoFit
    Cells.EntireRow.AutoFit
    MsgBox "Dati scaricati", vbInformation, "NOTIFICA"
End Sub

Sub annulla_spazi()
Dim wks As Worksheet 'dichiaro le variabili
Dim y As Long
Set wks = Worksheets("Foglio1") 'imposto come wks il Foglio1
 Application.ScreenUpdating = False 'evito lo sfarfallio nell’esecuzione della macro
    For y = 1 To 100
        With wks.Range("A" & y) 'spazzolo la colonna A per ogni valore (da A1 a A100)
            .Value = Trim(.Value) 'tolgo tutti gli spazi iniziali e finali]
            Do While InStr(1, .Value, "  ") > 0 'cerco per ogni stringa quando c’è più di uno spazio indipendentemente dal numero
                .Value = Replace(.Value, "  ", " ") 'sostituisco tutti gli spazi trovati con un solo spazio
            Loop
            .Value = .Value & " " 'aggiungo uno spazio alla fine della stringa
        End With
    Next
    Set wks = Nothing
    Application.ScreenUpdating = True 'ripristino l'istruzione sopra inibita
End Sub
Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 348
Iscritto il: 27/05/11 10:18

Sponsor
 

Re: Rimuovere testo e cifre da stringa alfanumerica + spazi

Postdi Gianca532011 » 03/01/23 12:41

P.s l'immagine risulta tagliata, però se cliccate sul link più sopra, si apre in toto e si può vedere il risultato atteso . Ciao
Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 348
Iscritto il: 27/05/11 10:18

Re: Rimuovere testo e cifre da stringa alfanumerica + spazi

Postdi Anthony47 » 03/01/23 15:56

Prova sostituendo l'attuale ciclo For Each Td In Tr.Cells /Next Td con
Codice: Seleziona tutto
            For Each Td In Tr.Cells
                If iCol = 2 And iRow > 1 Then
                    Cells(iRow, iCol) = Td.GetElementsByTagName("strong")(0).innertext
                    iCol = iCol + 1
                Else
                    Cells(iRow, iCol) = Td.innertext
                    iCol = iCol + 1
                End If
            Next Td
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Rimuovere testo e cifre da stringa alfanumerica + spazi

Postdi Gianca532011 » 03/01/23 18:30

Ovviamente funziona :D però mi spieghi il senso delle tue modifiche ? poi quello strong ?? Lo hai preso dalla pagina web oppure ...
Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 348
Iscritto il: 27/05/11 10:18

Re: Rimuovere testo e cifre da stringa alfanumerica + spazi

Postdi Anthony47 » 03/01/23 21:18

Ovviamente ho sbirciato nel sorgente htm della pagina:
Codice: Seleziona tutto
<td>
 <article class="u-hidden -sm -md">
 <div class="l-box -pb | l-screen -xs-15">
 <a href="/borsa/indici/indici-in-continua/dettaglio.html?indexCode=ITLMS&amp;lang=it" title="Accedi alla scheda strumento&nbsp;FTSE Italia All-Share">
  <span class="t-text">
   <strong>FTSE Italia All-Share</strong>
  </span>
 </a>
</div>
<div class="l-box | l-screen">
 <span class="t-text">26.580,85 </span>
 <span class="separator">&nbsp;&nbsp;</span>
 <span class="t-text -cbalanced">+1,51 </span>
 <span class="separator">&nbsp;&nbsp;</span>
 <span class="t-text">03/01/23&nbsp;-&nbsp;15.05.45</span>
</div>
</article>
 <a class="u-hidden -xs" href="/borsa/indici/indici-in-continua/dettaglio.html?indexCode=ITLMS&amp;lang=it" title="Accedi alla scheda strumento&nbsp;FTSE Italia All-Share">
 <span class="t-text">FTSE Italia All-Share</span>
 </a>
</td>

L'uso del tag "strong" mi e' sembrato il metodo piu' semplice per prendere quel che serve...
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Rimuovere testo e cifre da stringa alfanumerica + spazi

Postdi Gianca532011 » 04/01/23 20:56

Grazie.
Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 348
Iscritto il: 27/05/11 10:18


Torna a Applicazioni Office Windows


Topic correlati a "Rimuovere testo e cifre da stringa alfanumerica + spazi":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti