Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [EXCEL] Eliminare un carattere strano

    Ciao.

    Stò creando un listino per il mio negozio online tramite VBA per ottenere un file CSV da caricare sul sito.

    In una cella ho uno strano carattere che altro non è che un pallino nero che incollo qui "ᐧ"

    Quando esporto il file CSV da caricare sul mio sito il carattere non viene riconosciuto e viene sostituito da un "?". Ho provato a trovarne il codice ASCII per rimpiazzarlo con il comando REPLACE con un più abbordabile "-" ma i codici che ho trovato sono in realtà relativi ad altri caratteri, come 5159. Ho cercato anche nei simboli di word e non c'è ....

    Se lo copio e lo incollo nella finestra dell'editor di visual basic me lo vede come "?"...

    Stò per impazzire... mi date un consiglio ?

    Grazie mille...

  2. #2
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    429
    Ciao, potresti fare un ciclo for che ti sostituisca tutti i caratteri che non sono lettere o numeri come questo

    testo = il testo nella tua cella

    chr( numero tabella ascii) sono i vari caratteri come tabulatore o invio ecc che puoi trovare nella tabella ascii a questo link

    codice:
    for a=1 to len(testo)
        for c=0 to 64
            replace(testo,chr(c),"")
        next
        for c=91 to 127
            replace(testo,chr(c),"")
        next
    next
    nel mio esempio verranno sostituiti tutti i caratteri che non sono lettere maiuscole con niente.
    Da un grande potere derivano grandi responsabilità

  3. #3
    Originariamente inviato da abellos
    Ciao, potresti fare un ciclo for che ti sostituisca tutti i caratteri che non sono lettere o numeri come questo

    testo = il testo nella tua cella

    chr( numero tabella ascii) sono i vari caratteri come tabulatore o invio ecc che puoi trovare nella tabella ascii a questo link

    codice:
    for a=1 to len(testo)
        for c=0 to 64
            replace(testo,chr(c),"")
        next
        for c=91 to 127
            replace(testo,chr(c),"")
        next
    next
    nel mio esempio verranno sostituiti tutti i caratteri che non sono lettere maiuscole con niente.
    Ciao.

    Grazie per il tuo esempio ma purtroppo non funziona perchè quel maledetto carattare non è presente in quella tabella

    Se fosse stato un carattere facile da trovare in una tabella ASCII non ci sarebbero stati problemi... ma è un carattere strano. Ne ho trovati alcuni simili ma non quello.

    Eccolo ---------------------------> ᐧ

  4. #4
    è un tipico problema con i caratteri unicode... vedi un po' con i metodi che lavorano con UTF8
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  5. #5
    Originariamente inviato da hacker_nait
    è un tipico problema con i caratteri unicode... vedi un po' con i metodi che lavorano con UTF8
    Non ne capisco chissà quanto... non potresti suggerirmi qualcosa ?

  6. #6
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Il carattere è questo:
    http://it.wikipedia.org/wiki/Punto_mediano
    http://www.unicodemap.org/details/0x1427/index.html

    Su Vista e VS2010 Asc("ᐧ") da 63.
    Come ti hanno fatto notare è un problema di codifica del testo, a livello di codice vba non ti so dire come lavorare ma penso che puoi risolvere modificando appunto la codifica del file.
    Prova a copiare il carattere in un file di testo e a salvarlo, dovrebbe darti un' avviso, se dai ok e riapri il file trovi il ? mentre se dai annulla si apre una finestra di dialogo in cui puoi cambiare la codifica del file, ho provato con unicode e utf-8 e alla riapertura il carattere è corretto.
    Non ho excel sotto mano per provare con vba (uso openoffice...) ma potresti pensare di fare il replace del carattere con un programma in vb.net visto che a me riconosce il carattere e lo sostituisce.
    Questo è il codice in vb.net per leggere un txt e fare il replace:
    codice:
        Private Sub Button2_Click() Handles Button2.Click
            Dim cartella As String = My.Computer.FileSystem.SpecialDirectories.Desktop
    
            ' il file prova.txt deve esistere sul desktop e deve contenere il carattere
            Dim nomefile As String = cartella & "\prova.txt"
    
            Dim nomefile_mod As String = cartella & "\prova2.txt"
            Dim tempFile As String = System.IO.Path.GetTempFileName()
            Dim car_cazz As Char = "ᐧ"
         
           ' questo è importante, 65001 corrisponde a utf-8 
            Using sr As New StreamReader(nomefile, Encoding.GetEncoding(65001))
                Using sw As New StreamWriter(tempFile, False, Encoding.GetEncoding(65001))
                    While sr.Peek() <> -1
                        sw.WriteLine(sr.ReadLine().Replace(car_cazz, "ok"))
                    End While
                End Using
            End Using
            File.Delete(cartella & "\prova2.txt")
            File.Move(tempFile, nomefile_mod)
            Dim crea_txt As New Process
            crea_txt.StartInfo.FileName = nomefile_mod
            crea_txt.StartInfo.WindowStyle = ProcessWindowStyle.Normal
            crea_txt.Start()
        End Sub
    Spero che queste informazioni ti possano essere utili...di più nin so...

  7. #7
    Ti ringrazio molto, sul serio ma, a questo punto, mi risulta più semplice fare un sostituisci direttamente da excel...

  8. #8
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Originariamente inviato da corvo4791
    Ti ringrazio molto, sul serio ma, a questo punto, mi risulta più semplice fare un sostituisci direttamente da excel...

  9. #9
    Ciao Non ti scoraggiare.

    Prova a fare un banale ciclo do come il listata seguente.

    Dim Simbolo As Variant
    Dim iCella_Simbolo As Long
    iCella_Simbolo = 1
    Do
    Simbolo = Worksheets("Foglio1").Range("a" & iCella_Simbolo).Text
    If Simbolo = "" Then
    Worksheets("Foglio1").Range("A" & iCella_Simbolo) = ""
    End If
    iCella_Simbolo = iCella_Simbolo + 1
    Loop While Worksheets("Foglio1").Range("a" & iCella_Simbolo).Text <> ""


    Ti assicuro che funziona

  10. #10
    Originariamente inviato da ZeroIce78
    Ciao Non ti scoraggiare.

    Prova a fare un banale ciclo do come il listata seguente.

    Dim Simbolo As Variant
    Dim iCella_Simbolo As Long
    iCella_Simbolo = 1
    Do
    Simbolo = Worksheets("Foglio1").Range("a" & iCella_Simbolo).Text
    If Simbolo = "" Then
    Worksheets("Foglio1").Range("A" & iCella_Simbolo) = ""
    End If
    iCella_Simbolo = iCella_Simbolo + 1
    Loop While Worksheets("Foglio1").Range("a" & iCella_Simbolo).Text <> ""


    Ti assicuro che funziona
    Apprezzo molto il tentativo, ma il problema è sempre quello: il simbolo non è un simbolo convenzionale. Il tuo "" viene letto, nella finestra di visual basic, come un simbolo freccia e non il "middle dot" che cerco io. Quindi, fino a quando non si trova il modo di farlo interpretare da visual basic, sotto forma di codice ASCII, non c'è modo di farglielo leggere.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.