Caracteres raros al importar un CSV a un EXCEL

Tengo este macro:

Sub ImportarCSV()    Sheets("Llistat").Range("a1:e20000").ClearContents    With Sheets("Llistat").QueryTables.Add(Connection:= _        "TEXT;G:\B\EXP\GD\BD_Doc_CSV.csv", _        Destination:=Sheets("Llistat").Range("$A$1"))        .Name = "fichero"        .FieldNames = True        .RowNumbers = False        .FillAdjacentFormulas = True        .PreserveFormatting = True        .RefreshOnFileOpen = False        .RefreshStyle = xlOverwriteCells        .SavePassword = False        .SaveData = True        .AdjustColumnWidth = True        .RefreshPeriod = 15        .TextFilePromptOnRefresh = False        .TextFilePlatform = 850        .TextFileStartRow = 1        .TextFileParseType = xlDelimited        .TextFileTextQualifier = xlTextQualifierDoubleQuote        .TextFileConsecutiveDelimiter = False        .TextFileTabDelimiter = True        .TextFileSemicolonDelimiter = True 'CSV: punto y coma        .TextFileCommaDelimiter = False        .TextFileSpaceDelimiter = False        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1) '5 columnas        .TextFileTrailingMinusNumbers = True        .Refresh BackgroundQuery:=False    End WithEnd Sub

Con el importo datos de  un CSV a una hoja de excel, lo que me pasa es que cambia las Ñ por Ð lo que me destroza muchas operaciones posteriores.

No puedo poner una macro con un SUSTITUYE ya que se vuelca varias veces el CSV mientras se usa el archivo y no quiero hacerlo pesado... Aparte cuando hago el macro de sustituye (grabado, no tecleado) me aparece un cuadro de dialogo que me indica cuantas modificaciones se han hecho... Y su ejecución debería ser silenciosa...

Supongo que es algo de codificación de caracteres, pero no logro encontrar la propiedad para asignarle una codificación especifica.

2 Respuestas

Respuesta
1

El archivo original esta bien codificado, los caracteres son correctos, es en el momento que ejecuto el macro que se importan diferente.

Probé el macro de Sustituye... pero me hace lento el programa ya que tengo que usarlo en varios sitios... encuentro que es un parche.

Sub SubstituyeCatRaros()Application.ScreenUpdating = False    Sheets("Llistat").Visible = True    Sheets("Llistat").Select    Range("A1").Select    Cells.Replace What:="Ð", Replacement:="Ñ", LookAt:=xlPart, SearchOrder _        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False    Range("A1").Select        Cells.Replace What:="Ã", Replacement:="Ç", LookAt:=xlPart, SearchOrder _        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False    Sheets("Llistat").Visible = FalseApplication.ScreenUpdating = TrueIrAControlEnd Sub

He estado investigando (aunque os pregunto, realmente nunca dejo de investigar) y al final fui analizando parametro a parametro (asi de paso aprendia mas cosas)

El parámetro .TextFilePlataform se refiere a la codificación del texto cuando haces una importación. De donde me copie esa función la tenían en Japones... y no reconocía los caracteres de aquí. Buscando más he visto que de 850 que hay se tiene que poner 1252 y entonces ya funciona.

Bueno... ha sido una autorespuesta al final, pero lo importante es dar con la solución ;)

Un abrazo a todos.

Respuesta
1

Solamente para saber si los caracteres están en el archivo o son producto de la macro. ¿Si abres el archivo directamente desde excel también te pone los caracteres?

¿Y si abres el archivo con el block de notas cómo están los caracteres?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas