Pasar de excel a txt

Hola, buscando en esta página me eoncontre un código para pasar de xls a txt. Pero tengo una duda, el código funciona bien para las 5 primeras columnas, pero cuando son más de cinco columnas aparece un error que dice que no coinciden los tipos
alguioen por favor me podría colaborar
1

1 respuesta

Respuesta
1
Espero que la siguiente fórmula te sea de utilidad, solo es necesario que sustituyas el titulo inicial de tus columnas, la celda donde comienzas y nombre del archivo de .txt. Esta con la explicación para que te sea más fácil.
Esto lo tendrás que poner en un commandbutton
Private Sub CommandButton1_Click()
Rem se traslada a la celda a8
Range("a5").Select
Rem si no hay ningún dato en a8 que no archive de nuevo
If ActiveCell = Empty Then GoTo salte
Rem abre un archivo en la unidad c con el nombre de datos.txt
Rem en forma de añadir Temporal(output) en el área de almacenamiento #1
Open "h:\datos.txt" For Output As 1
Rem activa una etiqueta para poder regresar
regresa:
Rem captura el nombre en una variable
nombre = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
Rem se mueve una columna a la derecha
ActiveCell.Offset(0, 1).Select
Rem captura la direccion en una variable
direccion = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
Rem se mueve una columna a la derecha
ActiveCell.Offset(0, 1).Select
Rem captura el telefono en una variable
telefono = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
Rem captura el telefono en una variable
ciudad = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
Rem captura el telefono en una variable
lada = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
Rem captura el telefono en una variable
serie = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
Rem escribe los datos nombre, direccion y telefono en el archivo
Write #1, nombre, direccion, telefono, ciudad, lada; serie
Rem baja un renglón para el siguiente nombre
ActiveCell.Offset(1, 0).Select
Rem retrocede dos columnas
ActiveCell.Offset(0, -5).Select
Rem si la celda esta vacía que no regrese ya
If ActiveCell = Empty Then GoTo salte
Rem regresa a escribir el siguiente nombre en el archivo
GoTo regresa:
salte:
Rem se acabo
Rem cierra el archivo
Close #1
End Sub
y esto en otro
Private Sub CommandButton2_Click()
Rem se translada a la celda a8
Range("a5").Select
Rem abre un archivo en la unidad c con el nombre de datos.txt
Rem en forma de Leer (input) en el área de almacenamiento #1
Open "h:\datos.txt" For Input As 1
Rem esto significa hazlo mientras no sea fin del archivo
Rem esto quiere decir que no deje de leer los datos
Rem hasta que no se llegue al ultimo de ellos
Do While Not EOF(1)
Rem lee los datos
Input #1, nombre, direccion, telefono, estado, lada, serie
Rem escribe en la celda el nombre
ActiveCell.FormulaR1C1 = nombre
Rem se mueve una columna a la derecha
ActiveCell.Offset(0, 1).Select
Rem escribe en la celda la direccion
ActiveCell.FormulaR1C1 = direccion
Rem se mueve una columna a la derecha
ActiveCell.Offset(0, 1).Select
Rem escribe en la celda el telefono
ActiveCell.FormulaR1C1 = telefono
ActiveCell.Offset(0, 1).Select
Rem escribe en la celda el telefono
ActiveCell.FormulaR1C1 = estado
ActiveCell.Offset(0, 1).Select
Rem escribe en la celda el telefono
ActiveCell.FormulaR1C1 = lada
ActiveCell.Offset(0, 1).Select
Rem escribe en la celda el telefono
ActiveCell.FormulaR1C1 = serie
Rem baja un renglón para el siguiente nombre
ActiveCell.Offset(1, 0).Select
Rem retrocede dos columnas
ActiveCell.Offset(0, -5).Select
Rem activa el ciclo Do While-que regrese hasta
Rem que se cumpla la condición
Loop
Rem cierra el archivo
Close #1
End Sub
Hola, de antemano muchísimas gracias por tu pronta respuesta, pero sigo teneineo el mismo inconveniente, tal vez no me di a entender, tu código me funciona bien, pero le problema es que manejo una hoja de excel con muchas columnas( más de 10) y necesito pasarla a txt y que me queden separadas por comas y sin comillas le hice un cambio al código que me enviaste y me corre bien pero hasta la 5 columna cuando le hago el cambio para que me tome las otras columnas me sale error
Private Sub CommandButton1_Click()
Rem se traslada a la celda a8
Range("a1").Select
Rem si no hay ningún dato en a8 que no archive de nuevo
If ActiveCell = Empty Then GoTo salte
Rem abre un archivo en la unidad c con el nombre de datos.txt
Rem en forma de añadir Temporal(output) en el área de almacenamiento #1
Open "d:\datos.txt" For Output As 1
Rem activa una etiqueta para poder regresar
regresa:
Rem captura el nombre en una variable
nombre = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
Rem se mueve una columna a la derecha
ActiveCell.Offset(0, 1).Select
Rem captura la direccion en una variable
direccion = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
Rem se mueve una columna a la derecha
ActiveCell.Offset(0, 1).Select
Rem captura el telefono en una variable
telefono = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
Rem captura el telefono en una variable
ciudad = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
Rem captura el telefono en una variable
lada = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
Rem captura el telefono en una variable
serie = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
Rem captura el telefono en una variable
kiko = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
Rem captura el telefono en una variable
mico = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
mico1 = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
mico2 = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
mico3 = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
mico4 = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
mico5 = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
mico6 = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
mico7 = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
mico8 = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
ActiveCell.Offset(0, 1).Select
mico9 = ActiveCell
Rem borra el dato de la celda
ActiveCell = Empty
'ActiveCell.Offset(0, 1).Select
Rem escribe los datos nombre, direccion y telefono en el archivo
Print #1, nombre + "," + direccion + "," + telefono + "," + ciudad + "," + lada, serie, kiko, mico, mico1, mico2, mico3, mico4, mico5, mico6, mico7, mico8, mico9
Rem baja un renglón para el siguiente nombre
ActiveCell.Offset(1, 0).Select
Rem retrocede dos columnas
ActiveCell.Offset(0, -16).Select
Rem si la celda esta vacía que no regrese ya
If ActiveCell = Empty Then GoTo salte
Rem regresa a escribir el siguiente nombre en el archivo
GoTo regresa:
salte:
Rem se acabo
Rem cierra el archivo
Close #1
End Sub
Porque no hacemos algo, mandame un ejemplo de tu archivo para probar y ver si te puedo ayudar mejor... mi correo es [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas