MACRO PARA ELIMINAR CARACTERES NO IMPRIMIBLES Y LIMITAR A 250 CARACTERES UNA COLUMNA DE DATOS IMPORT
Publicado por Quico (106 intervenciones) el 24/01/2019 17:48:08
Busco la forma, de que una vez importado un *.csv a un excel con varia hojas, y una hoja llamada 'CSV', alguna función permita analizar una columna (D)
para hacer lo siguente:
1. Eliminar todos los caracteres 'no imprimibles' de cada celda de la columna D (por ejemplo "#$%()^*&/)
2. Que todos los carácteres que pasen de 250 se eliminen, obviamente los caracteres de la derecha.
Tengo esta macro que me importa un CSV, lo sitúa en la página CSV , pero no consigo eliminar los caracteres 'no imprimibles' y menos aún borrar caracteres de 251 en adelante.
¡Todo en la misma columna D!!
Esta es la macro.
¿Alguien podría indicarme que debo hacer una vez se ha importado el CSV?
Sub Importar_CSV()
'Definir objetos a utilizar
Dim RutaArchivo As String 'ruta donde busca el archivo
Dim wsDestino As String
'Definimos con 'wsDestino' la hoja llamada CSV
Set ws = Worksheets("CSV")
'Controlamos algun posible error.
On Error Resume Next
'Forzamos para que solo abra ficheros CSV con un cuadro de dialogo
RutaArchivo = Application.GetOpenFilename(Title:="XXXX - Busca y selecciona el archivo CSV a importar...", _
filefilter:="Text Files (*.csv),*.csv")
'Forzamos que el CSV se abra en la pestaña CSV
With ws.QueryTables.Add(Connection:="TEXT;" & RutaArchivo, Destination:=ws.Range("$A$2"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
' Y aqui es dónde le indico que selecciones la columna D para buscar y corregir los datos no imprimibles.
Columns("D:D").Select '<--Le indico que ha de actuar solo en la columna D
Dim Characters As String '<--Defino el string 'Characters'
Dim I As Long
Characters = "#$%()^*&/" '<-- Le digo los caracteres que se han de eliminar o cambiar.
For I = 1 To Len(Characters)
Str = Replace$(Str, Mid$(Characters, I, 1), "")
Next
RemoveSpecial = Str
End Function
End Sub
para hacer lo siguente:
1. Eliminar todos los caracteres 'no imprimibles' de cada celda de la columna D (por ejemplo "#$%()^*&/)
Ej: Titulo (22) - "Copito de nieve", el gorila al 100% en #Barcelona. pasaría a: Titulo 22 - Copito de nieve, el gorila al 100 en Barcelona
2. Que todos los carácteres que pasen de 250 se eliminen, obviamente los caracteres de la derecha.
Tengo esta macro que me importa un CSV, lo sitúa en la página CSV , pero no consigo eliminar los caracteres 'no imprimibles' y menos aún borrar caracteres de 251 en adelante.
¡Todo en la misma columna D!!
Esta es la macro.
¿Alguien podría indicarme que debo hacer una vez se ha importado el CSV?
Sub Importar_CSV()
'Definir objetos a utilizar
Dim RutaArchivo As String 'ruta donde busca el archivo
Dim wsDestino As String
'Definimos con 'wsDestino' la hoja llamada CSV
Set ws = Worksheets("CSV")
'Controlamos algun posible error.
On Error Resume Next
'Forzamos para que solo abra ficheros CSV con un cuadro de dialogo
RutaArchivo = Application.GetOpenFilename(Title:="XXXX - Busca y selecciona el archivo CSV a importar...", _
filefilter:="Text Files (*.csv),*.csv")
'Forzamos que el CSV se abra en la pestaña CSV
With ws.QueryTables.Add(Connection:="TEXT;" & RutaArchivo, Destination:=ws.Range("$A$2"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
' Y aqui es dónde le indico que selecciones la columna D para buscar y corregir los datos no imprimibles.
Columns("D:D").Select '<--Le indico que ha de actuar solo en la columna D
Dim Characters As String '<--Defino el string 'Characters'
Dim I As Long
Characters = "#$%()^*&/" '<-- Le digo los caracteres que se han de eliminar o cambiar.
For I = 1 To Len(Characters)
Str = Replace$(Str, Mid$(Characters, I, 1), "")
Next
RemoveSpecial = Str
End Function
End Sub
Valora esta pregunta
0