Saltar al contenido

Cómo Formatear a texto desde macro abriendo texto desde la misma macro. Un reto.


Recommended Posts

publicado

Buenas Tardes amigos,

Un gran servicio, creen que me puedan ayudar, necesito formatear la columna leída desde la macro a texto, y evitar que los valores 01, 04, 0009 los muestre como 1, 4, 9 he probado con la grabadora de macros y no lo he logrado, sale un error de depuración:

adjunto ejemplos, he intentado hasta personalizar los tipos de datos a nivel de celda (@, ####, RRRR, etc. )en la plantilla pero nada, creo que la solución está en hacer referencia a los valores pero no sé cómo.

Adjunto ejemplo, crear la carpeta "carpeta" en c:\ y ejecutar la macro. En la prueba ver la columna AJ (cuenta bancaria)

Graaaaaciaaaaas !!!!!!!

WALTER.

CPE_MAESTRO_PER_PERSONAL.txt

CPE_MAESTRO_PERSONAL.xls

publicado

Amigo wdiazc, deberías hacer 2 cosas:

1.- Colocar formato texto a las columnas donde quieres que el dato numerico sea tratado como texto

2.- crear nuevamente tu macro con el asistente de exportado de datos de texto y en la última pantalla, te salen todas las columnas, alli puedes darle el formato que quieras a cada columna individualmente, entonces le colocas formato texto a todas las columnas numericas que quieres que sean tratadas como texto y listo, al ejecutar tu macro automáticamente colocara dichas columnas como texto.

espero que te sirva, suerte

publicado
Amigo wdiazc, deberías hacer 2 cosas:1.- Colocar formato texto a las columnas donde quieres que el dato numerico sea tratado como texto2.- crear nuevamente tu macro con el asistente de exportado de datos de texto y en la última pantalla, te salen todas las columnas, alli puedes darle el formato que quieras a cada columna individualmente, entonces le colocas formato texto a todas las columnas numericas que quieres que sean tratadas como texto y listo, al ejecutar tu macro automáticamente colocara dichas columnas como texto.espero que te sirva, suerte

-----------------------------------------------------------------------------------

Bigpetroman, Gracias por responder!!!!Pero sucede que ya tengo una plantilla predefinida en la cual se depositan los datos desde el texto, en este caso uso el objeto Activesheet que inclusive inicia la presentación de los datos en la columna que yo le indico, en ese sentido la acción que tan amablemente me sugieresfunciona perfecto pero abre otro excel (dejando de lado la plantilla) y usando el objeto workbooks. Quizá la pregunta sería como formatear las columnas usando el activesheet? En el caso adjunte un archivo excel y un txt para que lo puedan ver.Mil gracias.

publicado

amigo, creo que no entendiste, tu tienes una macro que se llama abrir_txt, que se encarga de leer la información de txt cierto?, pues bueno, la idea es que grabaras nuevamente esa macro pero colocando las opciones que te da el mismo excel para formatear cada columna con el asistente, mira este ejemplo, aquí las columnas 11, 13 y 17 (que dejastes en amarillo en el excel que subistes) la macro las trae ya como formato texto, así no tendras problemas, si quieres ejecutas esta macro para que veas.

Sub abrir_nuevo()

With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\carpeta\CPE_MAESTRO_PER_PERSONAL.txt" _
, Destination:=Range("$A$7"))
.Name = "CPE_MAESTRO_PER_PERSONAL_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, _
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub[/CODE]

ese formato lo establece esta línea de codigo:

[CODE].TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, _
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)[/CODE]

prueba y nos avisa, suerte

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.