Descarga el ejemplo en esta pagina. formulasexcel.com/macro-excel-para-generar-txt/ Descarga todas las apps contables en excel acá. formulasexcel.com/productos/
Capoooooooooooo! me re sirvió!. Y además de todo esto, aprendí gracias a lo que ví en el min 24:18 que se puede manipular las tabulaciones seleccionando y presionando Tab, o Shift + Tab... Cosa que no sabía y lo hacía de manera manual, fila por fila jaja. Terrible!!!
Muy buena explicacion paso a paso, lo probe en ofice 2016 y funciona a la perfeccion. Yo necesito que por cada fila se cree un archivo de texto. Saludos
Mil Gracias hermano, de pana aprendí muchísimo con este tutorial. Te felicito por tu pedagogía, super ordenado en la construcción de la macro, que es muy importante cuando estamos aprendiendo!! Espero seguir aprendiendo bro. Saludos y Bendiciones.
Puede cambiar la linea que obtiene el numero de filas a procesar. Usar la siguiente en lugar de la que se indica en el video: nFilas = Ht.Cells(Rows.Count, 1).End(xlUp).Row Para las columnas también puede usar la siguiente: nColumnas = Ht.Cells(1, Columns.Count).End(xlToLeft).Column
Excelente , clarísimo consulta cambiará mucho poder generar un tipo " prn ",con terminación de espacios en blanco por linea.quiero decir que respete las ultimas columnas aunque estén vacías o de contenido alfabético.
Del modo expresada la macro siempre creará una última fila llena de ;. Se debería cambiar el código por: For i = 2 To nFilas For j = 1 To nColumnas tx.write Ht.Cells(i, j).Value If j < nColumnas Then tx.write ";" Next j tx.WriteLine Next i
Para los que le pongan una cabecera con más parametro agregando filas ajustan el valor de i+1 tx.Write ht.Cells(i + 4, j) 'Se pone i+4 porque va a escribir desde la 5ta fila
Cordial saludo, excelente video, me puedes colaborar indicando cómo puedo generar 3 archivos txt diferentes de la misma hoja. ejemplo( celda A hasta la N, O hasta AE, y AF hasta AV) muy amable por su colaboracion.
Muy util y super claro. Felicitaciones por la claridad en explicacion. Una consulta, como puedo hacer para que cada celda tenga un numero de caracteres. Por ejemplo sueldo debe tener 13 digitos, si solo tiene 6, que complete los 13 agregando "000" a la izquierda? Gracias. Saludos.
muy bueno el video, una consulta, tomando como ejemplo tu cuadro de excel, yo quisiera exportar a txt solo los datos de las columnas a,b,c y f., por favor tu apoyo. toda la macros esta bien, pero no se como exportar solo esas columnas indicadas arriba
Gracias por compartirlo. Como podria darle formato de maximo 2 decimales para numeros que se trasladan al txt. Agradeceria su apoyo o si alguno podria direccionarme a algún link donde pueda revisar. Gracias
Hace varios años uso este código para generar varios archivos planos que posteriormente importo a un ERP. Muy valioso aporte. Ahora mi inquietud es la siguiente: Como puedo agregarle un inicio y un fin de archivo que corresponda a algo como esto: Inicio (000000100000001004) donde los primeros 7 dígitos corresponden a la linea 1 con formato '0000001' y los demás es un código que puede ir quemado. Para el fin del archivo: (000000499990001004) donde los primeros 7 dígitos corresponden al total de las lineas del archivo incluyendo encabezado y fin en formato '00000004' y los demás dígitos pueden ir quemados. Espero que me puedas ayudar!
Para eso se tiene que modificar el ciclo for, quedando de la siguiente manera. tx.Write "000000100000001004" tx.WriteLine For i = 2 To nFilas For j = 1 To nColumnas If j = 6 Then tx.Write CStr(Ht.Cells(i, j).Value) If j < nColumnas Then tx.Write vbTab Else tx.Write Ht.Cells(i, j).Value If j < nColumnas Then tx.Write vbTab End If Next j tx.WriteLine Next i tx.Write "000000499990001004"
GENIAL VIDEO.. UNA CONSULTA COMO PUEDO HACER PARA QUE ME EXPORTE TODOS LOS DATOS EN UNA SOLA LINEA EN VES DE QUE ESTEN SEPARADOS POR COLUMNAS QUE ESTEN SOBRE UNA SOLA FILA TODOS LOS DATOS, SE AGRADECE CUALQUIER AYUDA. SALUDOS
buen aporte, quería preguntarte como se hace para unir dos columnas y darles un limite de caracteres (50) en el txt ejemplo tengas dos columnas "Nombre y Apellido" y quieras que estas salgan en el txt pegadas y adicional te salgan espacios en blanco completando los cincuenta caracteres. a ver si me ayudas con esto si puesdes . mil gracias
hola buenas tardes tengo un problema al momento que genero un archivo txt los decimales que estan com punto se cambian por una coma ejemplo (21.19 asi esta en excel y cuando pasa a txt de cambia a 21,19) alguien me puede ayudar como solucionar ese detalle.. x favor... por ahi me indicaron que es por la configuracion de excel pero ya prove de todo y no logo encontar la solucion.... gracias..
Muy buen vídeo, quisiera saber como se haría en el caso que quiera "guardar como" el txt para poder guardarlo con cualquier nombre y el cualquier directorio.
Hola gracias por tan importante aporte, quería saber si usted tiene un macro que me ayude a imprimir un recibo que se encuentra en la mitad de una hoja A4 y que en el momento de imprimir se genere original y copia en la misma hoja A4, con otro video ya me estoy guiando para generar el txt. Agradezco la ayuda que me pueda prestar.
Hola!!! me ha sido excelente y muy sencillo. Pero tengo un problema que quizá puedas ayudarme. Cómo hacer para cargar la referencia. Te cuento el problema. Tengo la hoja de cálculo para que sea incorporada a otras. Si a la que le incorporo no tiene la referencia casca justo cuando declara el objeto. He estado buscando por ahí , pero no encuentro como. Gracias por anticipado
Excelente video amigo, una consulta, como puedo exportar el archivo en .csv y que muestre el Layout de las columnas C y D, ya que solo esos campos son los que necesito que se exporten al archivo. Agradezco tu ayuda. Saludos
al guardar el archivo txt me inserta por default siempre una linea en blanco en la ultima fila. ¿Como hago para que al momento de guardar el txt, esa linea desaparezca?
Muy bueno el vídeo pero tengo una duda, como haría para que me exporte un rango en especifico por ejemplo las ultimas dos columnas o la columna de la mitad o solo la primera? Cual seria el rango que debería de colocar? Gracias!
HOLA TE AGRADESCO QUE COMPARTAS TUS CONOCIMIENTOS, QUE SON DE GRAN AYUDA, TENGO UNA INQUIETUD AL GENERAR EL TXT COMO HACER UNA CONDICION PARA QUE RESPETE LOS CARACTERES DE UNA CELDA ES DECIR EN LA CELDA A2 QUE ES EL CONCECUTIVO.....YO NECESITO QUE EN EL ARCHIVO TXT TENGA 8 CEROS ANTES DEL 1....OJALA ME PUEDAS AYUDAR
Amigo gracias por lo que comparte. una consulta hay una columna donde pongo 0001 por que me exige la entidad pero a la ahora de correr la macro me sale 1 a la hora de hacer la validacion no me acepta por favor me podrías ayudar con ese tema . gracias de ante mano amigo saludos!!!
buen video me funciono bien en windows pero para mac me sale el error de librería filesystemobject habla otra forma de generar el txt sin utilizar filesystemobject.
Disculpa tengo una duda acerca de dicha configuración, anteriormente me sirvió mucho, pero ahora tengo un rango de 5,000 formulas hacia abajo las cuales son decisiones por lo tanto no en todo el rango existe información, por lo que me generó la duda de ver si puedo cortar el rango hasta donde hay información ya que actualmente los espacios se quedan en blanco y me gustaría ver solamente hasta donde esta el texto o información, muchas gracias espero y me puedan ayudar :).
Hola, muchas gracias por tu aporte ha estado muy bueno, de hecho para poder realizar esta macro he copiado uno a uno los datos de esta tabla. te quiero consultar ¿cual podria ser la linea de codigo o las lineas de codigo, para que es en el archivo txt en lugar de salir alguna palabra de la tabla yo pueda poner un codigo? es decir que en excel dice "culiacan" pero yo quiero que en lugar de culiacan diga 2345 y asi con mas dato. espero haber sido claro, agradesco tu ayuda....
Muy buen video, explicado paso a paso, pero quisiera saber como agrego un boton en mi excel para que me genere el archivo txt, gracias de antemano por su respuesta, muy buen aporte
Hola por favor me indican como crear la macro para un archivo que tenga indeterminadas filas pero que las columnas sean solo 17 asi tengan columnas sin datos
Buenas noches amigo, te felicito por el video, es muy profesional y muy bien explicado, tengo un detalle al momento de el conteo del numero de filas me arroja 1048575 y como prueba solo tengo 2 filas. Que puede estar ocurriendo ? Muchas Gracias
Nolberto Una pregunta, como le haces si deseas que el valor de una celda no te aparezca con algun separador, es decir, que no tenga comas ni nada de eso? Gracias x el Video....
Hola muy interesante tu video, estoy trabajando en algo y me viene de gran ayuda, tengo una pregunta. Necesito hacer lo contrario, pasar de bloc de notas a un listbox respetando la distribución por columnas, de paso seria bueno saber si se puede evitar cargar algunos de los datos para hacer una especie de filtro. gracias
El siguiente vídeo puede ser de ayuda para pasar los datos del txt a excel y luego ingresarlos al ListBox Para filtrar los datos que se ingresaran al ListBox puede usar un ciclo for y dentro de este un IF para indicar cuales entran o no .
Buen dia, excelente video me ayudo mucho, sin embargo, dentro de mi estructura de datos la columna que voy a exportar al TXT, contienen espacios en blanco, y se detiene al conseguir el primer espacio, es decir, si el dato es "001 003254789" solo muestra "001" y se va a la siguiente linea, como puedo hacer para que traiga todo el valor de la celda, incluyendo los espacios en blanco? gracias
buen dia. Me puede colaborar necesito hacer lo mismo del video, pero que me genere un archivo plano por cada fila de la tabla de excel osea me deberia quedar un archivo txt separado por coma por cada persona ingresada en la tabla con sus datos y que la primera celda de cada fila sea el nombre del archivo. gracias es urgente.
Hola, quisiera que el nombre de mi archivo exportado fuera el contenido de una celda de otra hoja, ¿Alguien sabe como podría? Después de varios intentos no se me ocurre nada
Excelente video, te hago una consulta a ver si me podes ayudar tengo que exportar a un archivo TXT con ciertas condiciones...me podiras pasar un mail donde te pueda pasar las condiciones?????
Hola amigo buen vídeo, un detalle cuando adicionamos filas en el encabezado (filas vacías) se rellena con el separador como se arreglaría en código para capture los datos ahí y los guarde en el txt ? me explico: digamos que adicionemos unas 10 filas antes del encabezado (Código Nombre Fecha Ingreso Sucursal Puesto Sueldo ) y modificamos en código de filas (nFilas = Ht.Range("A11", Ht.Range("A11").End(xlDown)).Cells.Count), para que capture los datos desde la nueva posicion y los guarde ... pero al final sale un archivo lleno pero con el separador.... y no el objetivo que es mostrar el registro que deseamos, como corregimos amigo ese código, y funcione.
hola como seria el codigo Macro Excel para Generar TXT CSV que solo sea un solo botón no dos que al darle clic a ese boton genere un archivo txt y un csv automáticamente gracias
Hola, muy buen video, muchas feliciades!!! me voy a suscribir en tu canal, estoy empesando a desarrollar Macros espero contar con tu apoyo en un futuro no muy lejano, gracias!!!
Que tal buen día, si quisiera hacer la separación por doble tabulación como le tendría que hacer? lo intente de la siguiente manera: If j < nColumnas Then tx.Write vbTab tx.Write vbTab End If pero solo me pone una tabulación y necesito dos
Y como se podría copiar una celda específica a un archivo txt y que solicite el ingreso del nombre del archivo que debe tener, como comienzo del nombre, una concatenación, por ejemplo, : "F02-0000-xxxxx". La macro debe guardar una celda específica de cada fila de una misma columna cada vez que se ejecute (A5, A6, A7,...); asimismo; teniendo una validación de no volver a procesar la celda anterior y colocarle la palabra "Realizado" en la celda (B5, B6, B7,...) cada vez que procese.
Puede usar la misma macro como base para esto que comenta, usar la funcion if para decidir que celdas se agregan al txt y cuales no. Ejemplo: Puede validar si el dato ya se agrego anteriormente con algo similar a esto. if ht.cells(1 +1, j + 1) = "" con esa condición se valida si la celda a la derecha que en ese momento se esta procesando esta en blanco, es decir, aun no se le ha puesto el texto "Realizado" Para meter el mombre del archivo, se puede hacer con un InputBox pr = Application.InputBox("Ingresar Nombre de Archivo", "Nombre Archivo")
si quisiera que no solo fuera una persona, si no que lo sacara de una lista como pordria modificar esta parte del macross "if HT.cells(i+1,4).value= "Cancun".then"
Buenísimo el vídeo, pero ¿cómo puedo solucionar el problema de tener celdas vacías ?. Si encuentra una en mitad de una fila, directamente pasa a la siguiente sin coger los valores de las columnas que están a la derecha. Muchas gracias
Excelente vídeo, pero me surge el problema de que al querer cambiar el origen de los datos por ejemplo que empiece en A2 en lugar de A1, se genera un txt incompleto, me podrías dar alguna sugerencia para resolver este conflicto, saludos.
+spartan En el ejemplo empieza en A2 For i = 1 To nFilas For j = 1 To nColumnas tx.Write Ht.Cells(i + 1, j).Value If j < nColumnas Then tx.Write "|" Next j tx.WriteLine Next i En ese código, el contador i es el que indica el numero de fila donde se va recorriendo, inicia en 1 y termina en el numero de filas con datos de la tabla. tx.Write Ht.Cells(i + 1, j).Value En esa linea se indica el numero de fila de donde se van tomando los datos, como i empieza en 1, se le suma 1 para que inicie en la fila 2, en cada iteracion se suma 1 porque el contador ha iniciado una fila antes de la que que queremos obtener los datos. Si la primera fila donde se obtendrán los datos es la 3, entonces al iterador se le suma 2 tx.Write Ht.Cells(i + 2, j).Value
Hay un problema con tu codigo, a la hora de exportar no me respeta la macro anterior que corro para que me formatee el contenido en un ancho fijo y rellene con ceros y espacio.
disculpa ...me genera texto pero sólo una palabra.... ise una prueba haciendo el mismo contenido de tu archivo y si me funcionó pero al meter los datos que yo ocupo el bloc de notas solo me hace una palabra...tendrá mucho que ver porque inicien en # o en = ????
La clave para el recorrida de las filas es la variable nFilas, si al darle valor a esa variable se esta obteniendo un 1, entonces el ciclo se repite usa sola vez, asi que obtiene solo el dato de la primera fila a procesar. Así que debe revisar el código donde se la asigna valor a la variable nFilas.
Gracias por el tutorial, tengo un error que me sale al ejecutar que me indica error de compilación en la declaración de la variable: Dim obj As FileSystemObject, como puedo solucionar? gracias.
Una pregunta mas por favor, como hago que el nombre con el que se grave sea variables ejemplo, la fecha del día, esto para no perder el registro anterior. Y como enviar a otro archivo compartido que no sea el mismo lugar el archivo excel. Y muchas gracias por tu ayuda.
buena explicación me sirvió mucho pero cuando género el txt me cambia la configuración de la fecha la confiuracion de la fecha en el Excel es aaaa-mm-dd pero al generar el txt me genera dd/mm/aaaa alguien sabe como puedo hacer para que me conserve el formato del excel ?
Hola Me podrías ayudar con algo? Tengo muchos bloc de notas Lo que necesito es pasar todos los bloc de notas a un mismo y único excel ¿Cómo podría hacerlo?
hola, excelente video. quisiera hacerle una consulta si es posible. a mi me han pedido que de un excel, con varias columnas, grabe un txt, en el cual los datos van en linea y separados por una cantidad de espacios dada, es decir, si tengo una columna que ha de ocupar 20 espacios pero solo llené 10, el txt debe tener los 10 caracteres ocupados y rellenar los faltantes con 10 espacios. esto es una planilla que se ha de mandar a un banco. este código esta bien? porque no deja de dar errores. Option Explicit Sub TXT() Dim oDoc As Object ' El documento actual Dim oHojas As Object ' La colección de hojas del documento Dim oHoja As Object ' Hoja en específico Dim sNewFilename As String ' Nuevo nombre de texto Dim sURL As String ' URL existente en el documento Dim sCurrDir As String ' Directorio actual Dim sExt As String ' La nueva extensión a aplicar Dim NumeroArchivo As Integer Dim LongitudColumnas(25) As Integer ' Columnas A-Z. Columna A = índice 0 del array (integer) Dim DatoCelda As String Dim FilaActual As Long Dim Contador As Long Dim UltimaColumna As Long Dim LineaResultado As String Const COLUMNA_A As Long = 0 UltimaColumna = 25 ' Columna_Z ReDim LongitudColumnas(UltimaColumna) ' COLUMNAS LONGITUD LongitudColumnas(0) = 2 ' Columna_A 2 LongitudColumnas(1) = 4 ' Columna_B 4 LongitudColumnas(2) = 4 ' Columna_C 4 LongitudColumnas(3) = 20 ' Columna_D 20 LongitudColumnas(4) = 1 ' Columna_E 1 LongitudColumnas(5) = 2 ' Columna_F 2 LongitudColumnas(6) = 2 ' Columna_G 2 LongitudColumnas(7) = 1 ' Columna_H 1 LongitudColumnas(8) = 40 ' Columna_I 40 LongitudColumnas(9) = 40 ' Columna_J 40 LongitudColumnas(10) = 2 ' Columna_K 2 LongitudColumnas(11) = 8 ' Columna_L 8 LongitudColumnas(11) = 3 ' Columna_M 3 LongitudColumnas(11) = 1 ' Columna_N 1 LongitudColumnas(11) = 11 ' Columna_O 11 LongitudColumnas(11) = 8 ' Columna_P 8 LongitudColumnas(11) = 2 ' Columna_Q 2 LongitudColumnas(11) = 1 ' Columna_R 1 LongitudColumnas(11) = 1 ' Columna_S 1 LongitudColumnas(11) = 30 ' Columna_T 30 LongitudColumnas(11) = 6 ' Columna_U 6 LongitudColumnas(11) = 3 ' Columna_V 3 LongitudColumnas(11) = 4 ' Columna_W 4 LongitudColumnas(11) = 5 ' Columna_X 5 LongitudColumnas(11) = 20 ' Columna_Y 20 LongitudColumnas(11) = 2 ' Columna_Z 2 ' TOTAL 223 oDoc = ThisComponent oHojas = oDoc.Sheets() oHoja = oHojas.getByName("DATOS") 'sURL = ConvertFromURL(oDoc.getLocation()) sCurrDir = Mid(sURL, 1, Len(sURL) - Len(Dir(sURL))) sExt = ".txt" sNewFilename = sCurrDir & "Archivo_" & Format(Now, "yyyymmddhhmmss") & sExt ' ¡Atención! Los datos comienzan en la Fila 3 (El índice de la Fila 1 es 0) FilaActual = 0 ' ¡Atención! Los datos comienzan en la Columna A (El índice de la Columna A es 0) NumeroArchivo = FreeFile Open sNewFilename For Output As #NumeroArchivo With oHoja Do While .getCellByPosition(COLUMNA_A, FilaActual).getString() "Fin listado" LineaResultado = "" For Contador = 0 To UltimaColumna DatoCelda = .getCellByPosition(Contador, FilaActual).getString() If Len(DatoCelda) < LongitudColumnas(Contador) Then DatoCelda = DatoCelda & Space(LongitudColumnas(Contador) - Len(DatoCelda)) End If LineaResultado = LineaResultado & DatoCelda Next Print #NumeroArchivo, LineaResultado FilaActual = FilaActual + 1 Loop End With Close NumeroArchivo End Sub
Hola, la formula es excelente , pero cuando sola hay una fila el excel empieza colgarse y hacer reportes hasta de las celdas vacias, seria bueno una solucion ya que con una sola fila se cuelga el excel
si es una sola no deberías utilizar el for de columnas, solo el de las filas (i)... no sería un FOR dentro de otro sino un solo FOR el que necesitas, en otras palabras
Descarga el ejemplo en esta pagina.
formulasexcel.com/macro-excel-para-generar-txt/
Descarga todas las apps contables en excel acá.
formulasexcel.com/productos/
Muy buen video. Enhorabuena. 5 años depués aún me ha valido.
Capoooooooooooo! me re sirvió!.
Y además de todo esto, aprendí gracias a lo que ví en el min 24:18 que se puede manipular las tabulaciones seleccionando y presionando Tab, o Shift + Tab... Cosa que no sabía y lo hacía de manera manual, fila por fila jaja. Terrible!!!
Muy buena explicacion paso a paso, lo probe en ofice 2016 y funciona a la perfeccion. Yo necesito que por cada fila se cree un archivo de texto. Saludos
Muchísimas gracias por el tutorial. Hace rato estaba buscando la forma de optimizar mi trabajo. Dios Te bendiga
3 años despues me ayudó demasiado! Súper fácil de hacer 👌👍
El video de convertir a texto, buenísimo, lo hice al pie de las instruciones y funciona de maravilla, felicitaciones sigan adelante!!! 😂👍👍👍👍👍
Mil Gracias hermano, de pana aprendí muchísimo con este tutorial. Te felicito por tu pedagogía, super ordenado en la construcción de la macro, que es muy importante cuando estamos aprendiendo!! Espero seguir aprendiendo bro. Saludos y Bendiciones.
Gracias amigo justo lo que necesito aprender macros gracias saludos .
Estimado, muchas gracias. Me sirvio muchisimo. A partir tu ejemplo he podido hacer algunos cambios y me queda excelente. Saludos cordiales...
Puede cambiar la linea que obtiene el numero de filas a procesar.
Usar la siguiente en lugar de la que se indica en el video:
nFilas = Ht.Cells(Rows.Count, 1).End(xlUp).Row
Para las columnas también puede usar la siguiente:
nColumnas = Ht.Cells(1, Columns.Count).End(xlToLeft).Column
Muchísimas gracias, este me sirvió mucho mejor.
Muchas gracias por tu tutorial, me ha ayudado en mi trabajo. 100% efectivo!!
Excelente material , claro y detallado , gracias por compartir
EXCELENTE VIDEO, BIEN EXPLICADO MASTER!!!!
Excelente, me ayudo mucho.
Saludos
Excelente , clarísimo consulta cambiará mucho poder generar un tipo " prn ",con terminación de espacios en blanco por linea.quiero decir que respete las ultimas columnas aunque estén vacías o de contenido alfabético.
Me sirvió mucho tu video
Espero sigas subiendo más material como este
Saludos! Ya tienes tú aún y like
Del modo expresada la macro siempre creará una última fila llena de ;. Se debería cambiar el código por:
For i = 2 To nFilas
For j = 1 To nColumnas
tx.write Ht.Cells(i, j).Value
If j < nColumnas Then tx.write ";"
Next j
tx.WriteLine
Next i
Para los que le pongan una cabecera con más parametro agregando filas ajustan el valor de i+1
tx.Write ht.Cells(i + 4, j) 'Se pone i+4 porque va a escribir desde la 5ta fila
Cordial saludo, excelente video, me puedes colaborar indicando cómo puedo generar 3 archivos txt diferentes de la misma hoja. ejemplo( celda A hasta la N, O hasta AE, y AF hasta AV) muy amable por su colaboracion.
Excelente Tutorial, me sirvió de mucho, muchas gracias.
Excelente explicacion 🙏
Muy util y super claro.
Felicitaciones por la claridad en explicacion.
Una consulta, como puedo hacer para que cada celda tenga un numero de caracteres.
Por ejemplo sueldo debe tener 13 digitos, si solo tiene 6, que complete los 13 agregando "000" a la izquierda?
Gracias.
Saludos.
muy bueno el video, una consulta, tomando como ejemplo tu cuadro de excel, yo quisiera exportar a txt solo los datos de las columnas a,b,c y f., por favor tu apoyo.
toda la macros esta bien, pero no se como exportar solo esas columnas indicadas arriba
Gracias por compartirlo. Como podria darle formato de maximo 2 decimales para numeros que se trasladan al txt. Agradeceria su apoyo o si alguno podria direccionarme a algún link donde pueda revisar. Gracias
Hace varios años uso este código para generar varios archivos planos que posteriormente importo a un ERP. Muy valioso aporte. Ahora mi inquietud es la siguiente: Como puedo agregarle un inicio y un fin de archivo que corresponda a algo como esto: Inicio (000000100000001004) donde los primeros 7 dígitos corresponden a la linea 1 con formato '0000001' y los demás es un código que puede ir quemado. Para el fin del archivo: (000000499990001004) donde los primeros 7 dígitos corresponden al total de las lineas del archivo incluyendo encabezado y fin en formato '00000004' y los demás dígitos pueden ir quemados. Espero que me puedas ayudar!
Para eso se tiene que modificar el ciclo for, quedando de la siguiente manera.
tx.Write "000000100000001004"
tx.WriteLine
For i = 2 To nFilas
For j = 1 To nColumnas
If j = 6 Then
tx.Write CStr(Ht.Cells(i, j).Value)
If j < nColumnas Then tx.Write vbTab
Else
tx.Write Ht.Cells(i, j).Value
If j < nColumnas Then tx.Write vbTab
End If
Next j
tx.WriteLine
Next i
tx.Write "000000499990001004"
GENIAL VIDEO.. UNA CONSULTA COMO PUEDO HACER PARA QUE ME EXPORTE TODOS LOS DATOS EN UNA SOLA LINEA EN VES DE QUE ESTEN SEPARADOS POR COLUMNAS QUE ESTEN SOBRE UNA SOLA FILA TODOS LOS DATOS, SE AGRADECE CUALQUIER AYUDA. SALUDOS
buen aporte, quería preguntarte como se hace para unir dos columnas y darles un limite de caracteres (50) en el txt ejemplo tengas dos columnas "Nombre y Apellido" y quieras que estas salgan en el txt pegadas y adicional te salgan espacios en blanco completando los cincuenta caracteres. a ver si me ayudas con esto si puesdes . mil gracias
hola buenas tardes tengo un problema al momento que genero un archivo txt los decimales que estan com punto se cambian por una coma ejemplo (21.19 asi esta en excel y cuando pasa a txt de cambia a 21,19) alguien me puede ayudar como solucionar ese detalle.. x favor... por ahi me indicaron que es por la configuracion de excel pero ya prove de todo y no logo encontar la solucion.... gracias..
Super útil, muchas gracias
Muy buen vídeo, quisiera saber como se haría en el caso que quiera "guardar como" el txt para poder guardarlo con cualquier nombre y el cualquier directorio.
Está muy Bueno!! te pasaste!
Hola gracias por tan importante aporte, quería saber si usted tiene un macro que me ayude a imprimir un recibo que se encuentra en la mitad de una hoja A4 y que en el momento de imprimir se genere original y copia en la misma hoja A4, con otro video ya me estoy guiando para generar el txt. Agradezco la ayuda que me pueda prestar.
Hola!!! me ha sido excelente y muy sencillo. Pero tengo un problema que quizá puedas ayudarme. Cómo hacer para cargar la referencia. Te cuento el problema. Tengo la hoja de cálculo para que sea incorporada a otras. Si a la que le incorporo no tiene la referencia casca justo cuando declara el objeto. He estado buscando por ahí , pero no encuentro como. Gracias por anticipado
Excelente video amigo, una consulta, como puedo exportar el archivo en .csv y que muestre el Layout de las columnas C y D, ya que solo esos campos son los que necesito que se exporten al archivo. Agradezco tu ayuda. Saludos
si quiciera que bajo de cada renglon agregara mas informacion que habria que hecer??
como hago para anadir los encabezados de las columnas al archivo txt
al guardar el archivo txt me inserta por default siempre una linea en blanco en la ultima fila. ¿Como hago para que al momento de guardar el txt, esa linea desaparezca?
Muy bueno el vídeo pero tengo una duda, como haría para que me exporte un rango en especifico por ejemplo las ultimas dos columnas o la columna de la mitad o solo la primera? Cual seria el rango que debería de colocar? Gracias!
HOLA TE AGRADESCO QUE COMPARTAS TUS CONOCIMIENTOS, QUE SON DE GRAN AYUDA, TENGO UNA INQUIETUD AL GENERAR EL TXT COMO HACER UNA CONDICION PARA QUE RESPETE LOS CARACTERES DE UNA CELDA ES DECIR EN LA CELDA A2 QUE ES EL CONCECUTIVO.....YO NECESITO QUE EN EL ARCHIVO TXT TENGA 8 CEROS ANTES DEL 1....OJALA ME PUEDAS AYUDAR
Amigo gracias por lo que comparte. una consulta hay una columna donde pongo 0001 por que me exige la entidad pero a la ahora de correr la macro me sale 1 a la hora de hacer la validacion no me acepta por favor me podrías ayudar con ese tema . gracias de ante mano amigo saludos!!!
bueas noches amigo y si lo quieres programar en un boton que te haga todo eso?
Buenas tardes, que pasa si existen campos vacios?
buen video me funciono bien en windows pero para mac me sale el error de librería filesystemobject habla otra forma de generar el txt sin utilizar filesystemobject.
Disculpa tengo una duda acerca de dicha configuración, anteriormente me sirvió mucho, pero ahora tengo un rango de 5,000 formulas hacia abajo las cuales son decisiones por lo tanto no en todo el rango existe información, por lo que me generó la duda de ver si puedo cortar el rango hasta donde hay información ya que actualmente los espacios se quedan en blanco y me gustaría ver solamente hasta donde esta el texto o información, muchas gracias espero y me puedan ayudar :).
Hola, muchas gracias por tu aporte ha estado muy bueno, de hecho para poder realizar esta macro he copiado uno a uno los datos de esta tabla. te quiero consultar ¿cual podria ser la linea de codigo o las lineas de codigo, para que es en el archivo txt en lugar de salir alguna palabra de la tabla yo pueda poner un codigo? es decir que en excel dice "culiacan" pero yo quiero que en lugar de culiacan diga 2345 y asi con mas dato. espero haber sido claro, agradesco tu ayuda....
Hola!
Muy buen dato...se puede hacer algo así, pero que si los textos están en color en excel queden en color también al dejarlo en txt?
Muy buen video, explicado paso a paso, pero quisiera saber como agrego un boton en mi excel para que me genere el archivo txt, gracias de antemano por su respuesta, muy buen aporte
Hola por favor me indican como crear la macro para un archivo que tenga indeterminadas filas pero que las columnas sean solo 17 asi tengan columnas sin datos
Buenas noches amigo, te felicito por el video, es muy profesional y muy bien explicado, tengo un detalle al momento de el conteo del numero de filas me arroja 1048575 y como prueba solo tengo 2 filas. Que puede estar ocurriendo ? Muchas Gracias
Nolberto Una pregunta, como le haces si deseas que el valor de una celda no te aparezca con algun separador, es decir, que no tenga comas ni nada de eso? Gracias x el Video....
Ok lo pondré en práctica haber como me va!
Hola al momento de crear el objeto no me sale las opciones de FileSystemObjet será que mi excel lo tiene con otro nombre?
Hola muy interesante tu video, estoy trabajando en algo y me viene de gran ayuda, tengo una pregunta. Necesito hacer lo contrario, pasar de bloc de notas a un listbox respetando la distribución por columnas, de paso seria bueno saber si se puede evitar cargar algunos de los datos para hacer una especie de filtro.
gracias
El siguiente vídeo puede ser de ayuda para pasar los datos del txt a excel y luego ingresarlos al ListBox
Para filtrar los datos que se ingresaran al ListBox puede usar un ciclo for y dentro de este un IF para indicar cuales entran o no .
Formulas Excel esperare muy ansioso tu proximo video
Hola quisiera saber cómo puede generarse archivos planos con extensiones .det .cab .ley y otros tipos de extensiones en excel
Buen dia, excelente video me ayudo mucho, sin embargo, dentro de mi estructura de datos la columna que voy a exportar al TXT, contienen espacios en blanco, y se detiene al conseguir el primer espacio, es decir, si el dato es "001 003254789" solo muestra "001" y se va a la siguiente linea, como puedo hacer para que traiga todo el valor de la celda, incluyendo los espacios en blanco? gracias
Cómo puedo guardarlo en formato uft-8 desde el editor de visual basic?
Cinco años después del vídeo, buen código.
buen dia. Me puede colaborar necesito hacer lo mismo del video, pero que me genere un archivo plano por cada fila de la tabla de excel osea me deberia quedar un archivo txt separado por coma por cada persona ingresada en la tabla con sus datos y que la primera celda de cada fila sea el nombre del archivo. gracias es urgente.
Exelente tutorial!! Me podría ayudar, como podría generar un txt de una sola hoja pero de algunas columnas
lo explico en el video :/
no tendras por ahi uno de hacer nomina para el faov
Excelente video me sale el archivo txt en blanco a que se debe, gracias
Muchas gracias por el tutorial. Pero tengo una duda, al generar el txt genera una línea en blanco al final. ¿Cómo se puede borrar?
Hola, quisiera que el nombre de mi archivo exportado fuera el contenido de una celda de otra hoja, ¿Alguien sabe como podría? Después de varios intentos no se me ocurre nada
Excelente video, te hago una consulta a ver si me podes ayudar tengo que exportar a un archivo TXT con ciertas condiciones...me podiras pasar un mail donde te pueda pasar las condiciones?????
Puede plantear sus requerimientos en la siguiente pagina.
formulasexcel.com/consultoria/
Hola amigo buen vídeo, un detalle cuando adicionamos filas en el encabezado (filas vacías) se rellena con el separador como se arreglaría en código para capture los datos ahí y los guarde en el txt ?
me explico: digamos que adicionemos unas 10 filas antes del encabezado (Código Nombre Fecha Ingreso Sucursal Puesto Sueldo
) y modificamos en código de filas (nFilas = Ht.Range("A11", Ht.Range("A11").End(xlDown)).Cells.Count), para que capture los datos desde la nueva posicion y los guarde ... pero al final sale un archivo lleno pero con el separador.... y no el objetivo que es mostrar el registro que deseamos, como corregimos amigo ese código, y funcione.
Hola tengo una base de datos por periodos y quisiera que me considere sólo el periodo que yo imputo, podrías ayudarme
como hago para q cuando no hay datos en la hoja excel me salga el txt vacio si comas; tab, etc. y solo guarde el nombre que yo le doy.
Hola necesito ayuda urgente!! pls ¿Como puedo cargar masivamente una nomina excel a txt?
buen dia, quisiera saber si es posible que genere varios txt por hoja separada en el mismo libro con esa mismo macro, gracias
Hola como hago para que a la hora de generar el txt la fecha ingreso aparezca debajo de cada nombre respectivamente.
hola como seria el codigo Macro Excel para Generar TXT CSV que solo sea un solo botón no dos que al darle clic a ese boton genere un archivo txt y un csv automáticamente gracias
Excelente, gracias por compartir
Hola tengo una duda se podrá EL PROCESO INVERSO?? escriba en txt y se pase a exell
En este video se explica como leer txt.
th-cam.com/video/FjQeQAVaIzo/w-d-xo.html
Muy buen tutorial!
Hola bro me podrias ayudar con esa macro para que no me genere el ultimo salto de linea
Hola, muy buen video, muchas feliciades!!! me voy a suscribir en tu canal, estoy empesando a desarrollar Macros espero contar con tu apoyo en un futuro no muy lejano, gracias!!!
saludos, todo me funciono pero hay alguna manera de generar el monto con 2 decimales por ejemplo 5000.00
Que tal buen día, si quisiera hacer la separación por doble tabulación como le tendría que hacer?
lo intente de la siguiente manera:
If j < nColumnas Then
tx.Write vbTab
tx.Write vbTab
End If
pero solo me pone una tabulación y necesito dos
EN EL CASO DE LA COLUMNA B2 SI TIENE TITULO PERO NO HAY DATOS PERO QUIERO QUE RESPETE LOS 16 CARACTERES QUE TIENE QUE TENER EL LAY OUT
Y como se podría copiar una celda específica a un archivo txt y que solicite el ingreso del nombre del archivo que debe tener, como comienzo del nombre, una concatenación, por ejemplo, : "F02-0000-xxxxx". La macro debe guardar una celda específica de cada fila de una misma columna cada vez que se ejecute (A5, A6, A7,...); asimismo; teniendo una validación de no volver a procesar la celda anterior y colocarle la palabra "Realizado" en la celda (B5, B6, B7,...) cada vez que procese.
Puede usar la misma macro como base para esto que comenta, usar la funcion if para decidir que celdas se agregan al txt y cuales no.
Ejemplo:
Puede validar si el dato ya se agrego anteriormente con algo similar a esto.
if ht.cells(1 +1, j + 1) = ""
con esa condición se valida si la celda a la derecha que en ese momento se esta procesando esta en blanco, es decir, aun no se le ha puesto el texto "Realizado"
Para meter el mombre del archivo, se puede hacer con un InputBox
pr = Application.InputBox("Ingresar Nombre de Archivo", "Nombre Archivo")
hermano como hago para que me pregunte el nombre con cual quiero guardar el archivo?
si quisiera que no solo fuera una persona, si no que lo sacara de una lista como pordria modificar esta parte del macross "if HT.cells(i+1,4).value= "Cancun".then"
Buenísimo el vídeo, pero ¿cómo puedo solucionar el problema de tener celdas vacías ?. Si encuentra una en mitad de una fila, directamente pasa a la siguiente sin coger los valores de las columnas que están a la derecha.
Muchas gracias
Como se hace para que solo se escriba por ejemplo la columna E
Como puedo crear el txt con nombre de archivo de una determinada celda?
Excelente vídeo, pero me surge el problema de que al querer cambiar el origen de los datos por ejemplo que empiece en A2 en lugar de A1, se genera un txt incompleto, me podrías dar alguna sugerencia para resolver este conflicto, saludos.
+spartan En el ejemplo empieza en A2
For i = 1 To nFilas
For j = 1 To nColumnas
tx.Write Ht.Cells(i + 1, j).Value
If j < nColumnas Then tx.Write "|"
Next j
tx.WriteLine
Next i
En ese código, el contador i es el que indica el numero de fila donde se va recorriendo, inicia en 1 y termina en el numero de filas con datos de la tabla.
tx.Write Ht.Cells(i + 1, j).Value
En esa linea se indica el numero de fila de donde se van tomando los datos, como i empieza en 1, se le suma 1 para que inicie en la fila 2, en cada iteracion se suma 1 porque el contador ha iniciado una fila antes de la que que queremos obtener los datos.
Si la primera fila donde se obtendrán los datos es la 3, entonces al iterador se le suma 2 tx.Write Ht.Cells(i + 2, j).Value
***** excelente muchas gracias
Hay un problema con tu codigo, a la hora de exportar no me respeta la macro anterior que corro para que me formatee el contenido en un ancho fijo y rellene con ceros y espacio.
En el vídeo se ve que funciona, pero si su caso es diferente, se tendrían que hacer los ajustes que correspondan.
disculpa ...me genera texto pero sólo una palabra.... ise una prueba haciendo el mismo contenido de tu archivo y si me funcionó pero al meter los datos que yo ocupo el bloc de notas solo me hace una palabra...tendrá mucho que ver porque inicien en # o en = ????
La clave para el recorrida de las filas es la variable nFilas, si al darle valor a esa variable se esta obteniendo un 1, entonces el ciclo se repite usa sola vez, asi que obtiene solo el dato de la primera fila a procesar.
Así que debe revisar el código donde se la asigna valor a la variable nFilas.
me marca error 70 con el tiempo de ejecucion en este apartado
Set ht = Worksheets("Hoja1")
lo mas seguro copiaste el código tal cual como el video...en "Hoja1" cambiala por "Datos"
Gracias por el tutorial, tengo un error que me sale al ejecutar que me indica error de compilación en la declaración de la variable:
Dim obj As FileSystemObject, como puedo solucionar? gracias.
A partir del minuto 2:20 se explica cono hacer referencia a la librería necesaria, con eso se soluciona tu problema.
Una pregunta mas por favor, como hago que el nombre con el que se grave sea variables ejemplo, la fecha del día, esto para no perder el registro anterior. Y como enviar a otro archivo compartido que no sea el mismo lugar el archivo excel. Y muchas gracias por tu ayuda.
Para eso puedes cambiar la linea del nombre de archivo
NombreArchivo = "Batch"
Por
NombreArchivo = "Batch " & Format(Date, "dd-mm-yy")
porque no añade los ceros decimales?
Me sirvió mucho el vídeo, pero en la fecha necesito que me pase sin los (/)
Hola, si encontraste la solución, por favor me ayudas
buena explicación me sirvió mucho pero cuando género el txt me cambia la configuración de la fecha la confiuracion de la fecha en el Excel es aaaa-mm-dd pero al generar el txt me genera dd/mm/aaaa alguien sabe como puedo hacer para que me conserve el formato del excel ?
excelente video!!!
Buen Tutorial, he notado que siempre genera con una linea vacía al final del archivo txt como haría para que no suceda esto.
metele una condicion parecida a la que le puso para que no ponga la ultima coma
Gracias!! me ayudaste!!
Excelente video...
Hola
Me podrías ayudar con algo?
Tengo muchos bloc de notas
Lo que necesito es pasar todos los bloc de notas a un mismo y único excel
¿Cómo podría hacerlo?
hola, excelente video. quisiera hacerle una consulta si es posible. a mi me han pedido que de un excel, con varias columnas, grabe un txt, en el cual los datos van en linea y separados por una cantidad de espacios dada, es decir, si tengo una columna que ha de ocupar 20 espacios pero solo llené 10, el txt debe tener los 10 caracteres ocupados y rellenar los faltantes con 10 espacios. esto es una planilla que se ha de mandar a un banco. este código esta bien? porque no deja de dar errores.
Option Explicit
Sub TXT()
Dim oDoc As Object ' El documento actual
Dim oHojas As Object ' La colección de hojas del documento
Dim oHoja As Object ' Hoja en específico
Dim sNewFilename As String ' Nuevo nombre de texto
Dim sURL As String ' URL existente en el documento
Dim sCurrDir As String ' Directorio actual
Dim sExt As String ' La nueva extensión a aplicar
Dim NumeroArchivo As Integer
Dim LongitudColumnas(25) As Integer ' Columnas A-Z. Columna A = índice 0 del array (integer)
Dim DatoCelda As String
Dim FilaActual As Long
Dim Contador As Long
Dim UltimaColumna As Long
Dim LineaResultado As String
Const COLUMNA_A As Long = 0
UltimaColumna = 25 ' Columna_Z
ReDim LongitudColumnas(UltimaColumna)
' COLUMNAS LONGITUD
LongitudColumnas(0) = 2 ' Columna_A 2
LongitudColumnas(1) = 4 ' Columna_B 4
LongitudColumnas(2) = 4 ' Columna_C 4
LongitudColumnas(3) = 20 ' Columna_D 20
LongitudColumnas(4) = 1 ' Columna_E 1
LongitudColumnas(5) = 2 ' Columna_F 2
LongitudColumnas(6) = 2 ' Columna_G 2
LongitudColumnas(7) = 1 ' Columna_H 1
LongitudColumnas(8) = 40 ' Columna_I 40
LongitudColumnas(9) = 40 ' Columna_J 40
LongitudColumnas(10) = 2 ' Columna_K 2
LongitudColumnas(11) = 8 ' Columna_L 8
LongitudColumnas(11) = 3 ' Columna_M 3
LongitudColumnas(11) = 1 ' Columna_N 1
LongitudColumnas(11) = 11 ' Columna_O 11
LongitudColumnas(11) = 8 ' Columna_P 8
LongitudColumnas(11) = 2 ' Columna_Q 2
LongitudColumnas(11) = 1 ' Columna_R 1
LongitudColumnas(11) = 1 ' Columna_S 1
LongitudColumnas(11) = 30 ' Columna_T 30
LongitudColumnas(11) = 6 ' Columna_U 6
LongitudColumnas(11) = 3 ' Columna_V 3
LongitudColumnas(11) = 4 ' Columna_W 4
LongitudColumnas(11) = 5 ' Columna_X 5
LongitudColumnas(11) = 20 ' Columna_Y 20
LongitudColumnas(11) = 2 ' Columna_Z 2
' TOTAL 223
oDoc = ThisComponent
oHojas = oDoc.Sheets()
oHoja = oHojas.getByName("DATOS")
'sURL = ConvertFromURL(oDoc.getLocation())
sCurrDir = Mid(sURL, 1, Len(sURL) - Len(Dir(sURL)))
sExt = ".txt"
sNewFilename = sCurrDir & "Archivo_" & Format(Now, "yyyymmddhhmmss") & sExt
' ¡Atención! Los datos comienzan en la Fila 3 (El índice de la Fila 1 es 0)
FilaActual = 0
' ¡Atención! Los datos comienzan en la Columna A (El índice de la Columna A es 0)
NumeroArchivo = FreeFile
Open sNewFilename For Output As #NumeroArchivo
With oHoja
Do While .getCellByPosition(COLUMNA_A, FilaActual).getString() "Fin listado"
LineaResultado = ""
For Contador = 0 To UltimaColumna
DatoCelda = .getCellByPosition(Contador, FilaActual).getString()
If Len(DatoCelda) < LongitudColumnas(Contador) Then
DatoCelda = DatoCelda & Space(LongitudColumnas(Contador) - Len(DatoCelda))
End If
LineaResultado = LineaResultado & DatoCelda
Next
Print #NumeroArchivo, LineaResultado
FilaActual = FilaActual + 1
Loop
End With
Close NumeroArchivo
End Sub
Gracias crack
Hola, la formula es excelente , pero cuando sola hay una fila el excel empieza colgarse y hacer reportes hasta de las celdas vacias, seria bueno una solucion ya que con una sola fila se cuelga el excel
si es una sola no deberías utilizar el for de columnas, solo el de las filas (i)... no sería un FOR dentro de otro sino un solo FOR el que necesitas, en otras palabras