Foros del Web » Soporte técnico » Ofimática »

Duda para generar un txt con un macro

Estas en el tema de Duda para generar un txt con un macro en el foro de Ofimática en Foros del Web. Hola Colegas, me gustaria ver si puedo guardar un datos de una hoja de excel en un txt, a traves de un macro, si me ...
  #1 (permalink)  
Antiguo 17/07/2007, 01:38
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 15 años, 9 meses
Puntos: 11
Duda para generar un txt con un macro

Hola Colegas, me gustaria ver si puedo guardar un datos de una hoja de excel en un txt, a traves de un macro, si me pueden dar algun codigo para analizaro algun link, se los voy a agradecer ;) saludos
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #2 (permalink)  
Antiguo 17/07/2007, 09:38
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 13 años, 1 mes
Puntos: 18
Re: Duda para generar un txt con un macro

Probaste con la grabadora de macros?

Abraham
  #3 (permalink)  
Antiguo 18/07/2007, 00:19
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 15 años, 9 meses
Puntos: 11
Re: Duda para generar un txt con un macro

Hola Abrahamvj, la verdad que no intente, por que no se me ocurrio como generarlo manualmente desde los menues. Ahora que me lo comentaste lo chequie, y voy a probar con guardar una hoja como txt a ver que codigo sale, gracias ;)
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #4 (permalink)  
Antiguo 25/08/2007, 17:02
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 15 años, 9 meses
Puntos: 11
Re: Duda para generar un txt con un macro

Hola Abrahamvj, hice unas pruebas y tengo el siguiente problema:

Usando "guardar como", me cambia el archivo en uso a la extension txt, y no es lo que busco, sino generar un txt nuevo de una hoja determinada con la extencion txt y que el archivo en uso siga siendo de excel.

La macro que me genera es:

Sub Macro2()

ChDir "C:\Documents and Settings\Administrador\Escritorio"
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\Administrador\Escritorio\" & Range("b4").Value & ".txt", FileFormat:= _
xlUnicodeText, CreateBackup:=False
End Sub

PD: La macro adjunta tambien tiene un error en el nombre, ya que no logro asignarle un nombre variable al archivo a crear (txt)

Alguna idea de como sigo? :D gracias por adelantado
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #5 (permalink)  
Antiguo 25/08/2007, 17:33
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 15 años, 9 meses
Puntos: 11
Re: Duda para generar un txt con un macro

Encontre este macro y lo adapte a lo que mas o menos busco, lo dejo por si alguien lo necesita, lo unico que le faltaria adaptar es que guarde la informacion de un rango en el txt, en vez de solo una columna

Sub Txt2()
Dim Archivo As String, dato As String
Archivo = "C:\" & Range("A1").Value & ".txt"
Open Archivo For Append As #1
Do While ActiveCell <> Empty
dato = ActiveCell.Value
Print #1, dato
ActiveCell.Offset(1, 0).Activate
Loop
Close #1
End Sub
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #6 (permalink)  
Antiguo 27/08/2007, 15:04
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 13 años, 1 mes
Puntos: 18
Re: Duda para generar un txt con un macro

Fijate en este ejemplo:


Sub Txtdatos()

Dim valor() As Variant

[a1].Select

If ActiveCell = Empty Then GoTo saltar

Open "C:\Datos.txt" For Append As 1

regresar:

valor = Array(ActiveCell, ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 2), ActiveCell.Offset(0, 3), _
ActiveCell.Offset(0, 4), ActiveCell.Offset(0, 5), ActiveCell.Offset(0, 6))

Print #1, valor(0), valor(1), valor(2), valor(3); _
valor(4), valor(5), valor(6)

ActiveCell.Offset(1, 0).Select

If ActiveCell = Empty Then GoTo saltar

GoTo regresar:

saltar:

Close #1

End Sub

Abraham
  #7 (permalink)  
Antiguo 28/08/2007, 14:15
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 12 años, 5 meses
Puntos: 88
De acuerdo Duda para generar un txt con un macro

Una variante dentro del mismo esquema sería:

Código:
Sub GeneraTxt()
Dim MiRango As Range, Largo As Integer, FilaActual As Long
On Error Resume Next
Set MiRango = Application.InputBox("Seleccione rango a exportar", Type:=8)
On Error GoTo 0
    If MiRango Is Nothing Then Exit Sub
    Open "C:\TEXTO.txt" For Output As #1
For Each Celda In MiRango
    If Largo <= Len(Celda) Then Largo = 1 + Len(Celda)
Next Celda
    FilaActual = MiRango.Cells(1).Row
For Each Celda In MiRango
    If FilaActual < Celda.Row Then
        FilaActual = Celda.Row: Print #1, ""
    End If
    Print #1, CStr(Celda); Space(Largo - Len(Celda));
Next Celda
    Close #1
    Set MiRango = Nothing
End Sub 
Saludos
  #8 (permalink)  
Antiguo 28/08/2007, 21:05
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 15 años, 9 meses
Puntos: 11
Re: Duda para generar un txt con un macro

Perfecto, lo que buscaba, gracias colegas!
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #9 (permalink)  
Antiguo 09/03/2010, 19:13
 
Fecha de Ingreso: marzo-2010
Mensajes: 1
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Duda para generar un txt con un macro

Hola amigo:

Modifique tu código para que en vez de usar espacio agregara como separador
un ;, ya que asi lo necesitaba.

pero ahora tengo un problema que es una tonteria y ya la cabeza no me da.

a ver si ustedes ven. el problema es que cada linea de datos termina con el ; y en mi caso el ultimo elemento deberia terminar sin esta.

este es el codigo que modifique:

-----------------------------
Sub GeneraTxt()
Dim MiRango As Range, Largo As Integer, FilaActual As Long
On Error Resume Next
Set MiRango = Application.InputBox("Seleccione rango a exportar", Type:=8)
On Error GoTo 0
If MiRango Is Nothing Then Exit Sub
Open "\TEXTO.txt" For Output As #1
For Each celda In MiRango
If Largo <= Len(celda) Then Largo = 1 + Len(celda)
Next celda
FilaActual = MiRango.Cells(1).Row
For Each celda In MiRango
If FilaActual < celda.Row Then
FilaActual = celda.Row: Print #1, ""
End If
Print #1, CStr(celda); ";";
Next celda
Close #1
Set MiRango = Nothing
End Sub

------------------------------------------------------------------
Espero haberme explicado. y gracias por su tiempo.









----------------------------------------------- anterior -------------------

Cita:
Iniciado por mrocf Ver Mensaje
Una variante dentro del mismo esquema sería:

Código:
Sub GeneraTxt()
Dim MiRango As Range, Largo As Integer, FilaActual As Long
On Error Resume Next
Set MiRango = Application.InputBox("Seleccione rango a exportar", Type:=8)
On Error GoTo 0
    If MiRango Is Nothing Then Exit Sub
    Open "C:\TEXTO.txt" For Output As #1
For Each Celda In MiRango
    If Largo <= Len(Celda) Then Largo = 1 + Len(Celda)
Next Celda
    FilaActual = MiRango.Cells(1).Row
For Each Celda In MiRango
    If FilaActual < Celda.Row Then
        FilaActual = Celda.Row: Print #1, ""
    End If
    Print #1, CStr(Celda); Space(Largo - Len(Celda));
Next Celda
    Close #1
    Set MiRango = Nothing
End Sub 
Saludos

Última edición por joseravelo; 09/03/2010 a las 19:15 Razón: error de tipeo
  #10 (permalink)  
Antiguo 19/07/2012, 13:30
Avatar de Yoss15  
Fecha de Ingreso: octubre-2007
Mensajes: 11
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Duda para generar un txt con un macro

Buen dia!!!

Primero que nada gracias por el valioso he aporte, me ha servido para generar un txt desde excel, el detalle es que necesito hacerle unos pequeños cambios...

estoy utilizando el codigo:

Sub GeneraTxt()
Dim MiRango As Range, Largo As Integer, FilaActual As Long
On Error Resume Next
Set MiRango = Application.InputBox("Seleccione rango a exportar", Type:=8)
On Error GoTo 0
If MiRango Is Nothing Then Exit Sub
Open "C:\IT\TEXTOP.txt" For Output As #1
For Each Celda In MiRango
If Largo <= Len(Celda) Then Largo = 1 + Len(Celda)
Next Celda
FilaActual = MiRango.Cells(1).Row
For Each Celda In MiRango
If FilaActual < Celda.Row Then
FilaActual = Celda.Row: Print #1, ""
End If
Print #1, CStr(Celda); Space(Largo - Len(Celda));
Next Celda
Close #1
Set MiRango = Nothing

End Sub


y obtengo un resultado muy parecido al que quiero, pero el detalle esta en que quisiera que solo para la primera columna se generen 5 espacios. es decir entre la columna 1 y 2 siempre existan 5 espacios en blancos, y para todas las demas solo un espacio en blanco.. al igual que para algunas celdas, que deben tener una longitud especifica, al no tenerla en el excel, en el momento de generar el txt se complete el tamaño de esa longitud con ceros..


agradeceria mucho de su ayuda
  #11 (permalink)  
Antiguo 20/07/2012, 07:48
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 12 años
Puntos: 39
Respuesta: Duda para generar un txt con un macro

Hola, buen dia a todos

He probado y usado el codigo de Cacho y:
Si no existe un archivo en C:\ llamado TEXTO.txt, presenta error 75 en timpo de ejecucion diciendo que "error de acceso a la ruta o al archivo", es decir, si no existe archivo con ese nombre en la raiz de C:, nada se puede hacer (talves sea por eso de permisos en la raiz donde esta instalado el SO) pero creando con anterioridad un archivo de texto llamado segun la macro, ahí si se ejecuta a perfeccion.
Cambio la ruta; Open "C:\0\TEXTO.txt" For Output As #1 y todo como se pensó, ejecucion sin tener que crear el archivo con anterioridad.
uso el Office 2010
El codigo de abrahamvj cambio el rango a donde empiesa el texto, en mi caso B3, (el contenido va desde B3 a b36 con lineas vacias de por medio), ejecuto la macro y me copia SOLO hasta encontrar la primera linea vacia (B5). El archivo txt SOLO presenta la linea B3 y B4

Solo comento esto como detalle, Cacho, abrahamvj y los demas EXPERTOS, pienso que sabran el porque, pues su experiencia y pratica los lleva a ese punto, no es comida para mi persona.
Gracias.
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 20/07/2012 a las 08:00
  #12 (permalink)  
Antiguo 22/07/2012, 15:25
Avatar de BrujoNic
Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.900
Antigüedad: 17 años, 10 meses
Puntos: 632
Respuesta: Duda para generar un txt con un macro

Cerrado, NO se permite revivir temas viejos.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:41.