............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

al imprimir hoja de excel copiar datos a archivo txt

Ver el tema anterior Ver el tema siguiente Ir abajo

al imprimir hoja de excel copiar datos a archivo txt

Mensaje por edgarivan6 el Mar Abr 07, 2015 10:00 pm

Saludos,
tengo un formulario en excel que genera  un archivo diferente al poner un numero en cierta celda y de esa manera se va generando un secuancia de archivos los mismos que son filtrados luego en una tabla para su contabilidad y cada vez que se genera el archivo se generan reportes escritos, el probleam es que personas inescupulosas borran ciertos archivos luego de impresos y eso se pierde al ser filtrados, por lo que he estado buscando una macro como copiar ciertas celdas del archivo generado en un archivo de texto como un log al imprimir el informe de esa manera salvaguardar la informacion y descubrir quien es el que borra. si alguien me podria ayudar le estaria muy agradecido

edgarivan6

Masculino Cantidad de envíos : 5
Edad : 55
Ciudad - Pais : Ecuador
Version de Excel : 2007
Fecha de inscripción : 07/04/2015

Volver arriba Ir abajo

Re: al imprimir hoja de excel copiar datos a archivo txt

Mensaje por moises melgar el Miér Abr 08, 2015 5:19 pm

tengo un codigo que siempre ocupo para pasar celdas a un txt:

Código:
Sub Celdas_a_txt()
Dim Archivotxt As String
Set fs = CreateObject("Scripting.fileSystemObject")
Archivotxt = "C:\Users\MOISES\Desktop\Libro1.txt" '<---Ruta y nombre del Txt a crear
Set a = fs.CreateTextFile(Archivotxt, True)
a.WriteLine (Hoja1.Range("A1").Value) '<-----celda que se escribe en el Txt, se escribe en un renglon del txt
'nota: se agregan una linea de a.WriteLine () por cada celda a agregar
'ejemplos:
'a.WriteLine (Hoja1.Range("A2").Value)
'a.WriteLine ("esto se escribe en el txt") '<---igual se pueden escribir oraciones
'es recomendable usar un bucle si se agregaran varias celdas al txt
a.Close
End Sub

El ejemplo es lo basico para poder realizarse, por lo que se debe adaptar a las necesidades buscadas
en mi caso para obtener el nombre del "archivotxt" usaba Application.GetSaveAsFilename para que apareciera la ventana de guardar como

saludos
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 563
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: al imprimir hoja de excel copiar datos a archivo txt

Mensaje por edgarivan6 el Miér Abr 08, 2015 10:22 pm

gracias por la ayuda

tengo el siguiente macro que uso para dar nombre al archivo

Private Sub Worksheet_Change(ByVal Target As Range)
'Mod.Por.DAM
If Target.Address(False, False) = "C4" Then 'en esta celda generalmente va un numero
r1 = "C:\Users\edgar\Documents\2015\"
r2 = "C:\Users\edgar\Documents\2015\NUEVO\"
r3 = "C:\Users\edgar\Documents\2015\NUEVO1\"
'r1 = "C:\trabajo\"
'r2 = "C:\trabajo\prue1\"
Dim NombreFichero As String
[C8] = Date
[D8] = Time
NombreFichero = Range("I7").Value 'I7 corresponde a la celda con el nombre de fichero, _
que es el numero de C4 o mas un texto otra celda
ChDir r1
archivo = Dir(NombreFichero & ".xls")
If archivo = "" Then
ChDir r2
archivo = Dir(NombreFichero & ".xls")
If archivo = "" Then
ActiveWorkbook.SaveAs Filename:=NombreFichero
Else
MsgBox "Ya existe el archivo en la ruta " & r2 & " VERIFIQUE Y EDITE EL ARCHIVO CREADO"
'msg = MsgBox("El archivo en la ruta: " & r2 & " ya existe, ¿Deseas reemplazarlo?", vbQuestion + vbYesNo, "")
'If msg = vbYes Then
'ChDir r3
'ActiveWorkbook.SaveAs Filename:=NombreFichero
' End If
End If
Else
MsgBox "Ya existe el archivo en la ruta " & r1 & " VERIFIQUE Y EDITE EL ARCHIVO CREADO"
End If
End If
End Sub


pero al final de la macro y antes de que se cierre la instruccion necesito guardar lo que esta escrito en las celdads C3, C4, C8 y D8 en el archivo C:\Users\edgar\Documents\2015\log.txt

Intente montar el ejemplo pero no me funciono, realiza todo lo de mi instruccion pero no se copian las celdas,
como podras darte cuenta la instruccion se activa el momento que cambia C4 que es un numero que va en incremento y el mismo le da el nombre del archivo que se crea

o a su vez una instrucción que copie lo de las celdas antes descritas al imprimir el informe

gracias de antemano

edgarivan6

Masculino Cantidad de envíos : 5
Edad : 55
Ciudad - Pais : Ecuador
Version de Excel : 2007
Fecha de inscripción : 07/04/2015

Volver arriba Ir abajo

Re: al imprimir hoja de excel copiar datos a archivo txt

Mensaje por moises melgar el Jue Abr 09, 2015 1:43 am

Modificado y adaptando la macro quedaria mas o menos asi:

Código:
Sub Celdas_a_txt_modificado()
    Dim Archivotxt As String

Set fs = CreateObject("Scripting.FileSystemObject")
Archivotxt = "C:\Users\edgar\Documents\2015\log.txt" '<---Ruta y nombre del Txt a crear

If Len(Dir(Archivotxt)) = 0 Then
    Set a = fs.CreateTextFile(Archivotxt, True)
    a.Close
End If
    
   Set a = fs.OpenTextFile(Archivotxt, 8)
   texto = Range("C3").Value & " " & Range("C4").Value & " " & Format(Range("C8").Value, "dd/mm/yyyy") & " " & Format(Range("D8").Value, "h:mm:ss AM/PM")
    a.WriteLine (texto) '<-----celda que se escribe en el Txt, se escribe en un renglon del txt
    a.Close
    Set fs = Nothing
    Set Archivo = Nothing
End Sub

Doy una explicada sencilla:

1. se hace uso de la linea de codigo:

If Len(Dir(Archivotxt)) = 0 Then
   Set a = fs.CreateTextFile(Archivotxt, True)
   a.Close
End If

Determina si el archivo a usar Existe , si no existe se procedera a crear el archivo
pero si existe se saltara este paso
(esto evita que no se reemplace el archivo existente)

2. Uso OpenTextFile para abrir el archivo y el valor de 8 es el valor de argumento modoES de OpenTextFile el cual se usa para escribir al final del archivo.

Código:
Set a = fs.OpenTextFile(Archivotxt, 8)
  editado: al enviar mensaje el formato negrita cortaba el renglon

3. imagino que en una linea van a ir los valores conjuntos de las celdas C3 (numero) & C4 (nombre) & C8(formato fecha) & D8(formt hora) por lo que "texto" es el texto resultante de la fusion de las 4 celdas
 
texto = Range("C3").Value & " " & Range("C4").Value & " " & Format(Range("C8").Value, "dd/mm/yyyy") & " " & Format(Range("D8").Value, "h:mm:ss AM/PM")

4. Una Vez obtenido el valor de "texto" y al estar usando el a = fs.OpenTextFile(Archivotxt, 8 ) este renglon agrega el dato de "texto" al final del txt
   a.WriteLine (texto) '<-----celda que se escribe en el Txt, se escribe en un renglon del txt ( en este caso se escribe el valor de "texto")
5. cerramos el archivo de Texto   
a.Close <--cierro el txt
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 563
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: al imprimir hoja de excel copiar datos a archivo txt

Mensaje por edgarivan6 el Vie Abr 10, 2015 12:36 pm

Te agradesco la ayuda me funciono perfecto, ya habia probado otras rutinas pero todas me sobreescribian los datos y no podia generar el historico de los datos
espero con esto pillar a quien borra la informacion despues de creada

aunque tambien me gustaria realizar una rutina que copie las mismas celdas pero cuando se imprima cualquier hoja del archivo, el archivo esta hecho con 8 hojas (DATOS, DATO1, DATO2.....DATO7)
la rutina anterior esta en la hoja DATOS que es la que me interesa celdad C3, C4, C8 Y D8 pero necesito saber que hoja u hojas se imprimieron

edgarivan6

Masculino Cantidad de envíos : 5
Edad : 55
Ciudad - Pais : Ecuador
Version de Excel : 2007
Fecha de inscripción : 07/04/2015

Volver arriba Ir abajo

Re: al imprimir hoja de excel copiar datos a archivo txt

Mensaje por moises melgar el Vie Abr 10, 2015 5:42 pm

Se copia el codigo y se adapta a sus nuevos propositos:

Primero en

Código:
texto = Range("C3").Value & " " & Range("C4").Value & " " & Format(Range("C8").Value, "dd/mm/yyyy") & " " & Format(Range("D8").Value, "h:mm:ss AM/PM")

se agregara el ActiveSheet.Name (nombre de la hoja activa, el cual sera la que se esta imprimiendo), yo le agrege el texto "Se ha imprimido la hoja", pero lo modificas a tu antojo

Código:
texto = "Se ha imprimido la hoja " & ActiveSheet.Name & " valores: " & Range("C3").Value & " " & Range("C4").Value & " " & Format(Range("C8").Value, "dd/mm/yyyy") & " " & Format(Range("D8").Value, "h:mm:ss AM/PM")

luego todo el codigo se coloca dentro de ThisWorkbook de tu proyecto de VBA con el Private Sub Workbook_BeforePrint(Cancel As Boolean):
quedando un codigo que se ejecuta cada vez que se imprime guardando un historial, en un txt, los valores de unas celdas y nombre de la hoja impresa:

Código:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim Archivotxt As String

Set fs = CreateObject("Scripting.FileSystemObject")
Archivotxt = "C:\Users\edgar\Documents\2015\log.txt" '<---Ruta y nombre del Txt a crear

If Len(Dir(Archivotxt)) = 0 Then
    Set a = fs.CreateTextFile(Archivotxt, True)
    a.Close
End If
    
   Set a = fs.OpenTextFile(Archivotxt, 8)
   texto = "Se ha imprimido la hoja " & ActiveSheet.Name & " valores: " & Range("C3").Value & " " & Range("C4").Value & " " & Format(Range("C8").Value, "dd/mm/yyyy") & " " & Format(Range("D8").Value, "h:mm:ss AM/PM")
    a.WriteLine (texto) '<-----celda que se escribe en el Txt, se escribe en un renglon del txt
    a.Close
    Set fs = Nothing
    Set Archivo = Nothing
End Sub
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 563
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: al imprimir hoja de excel copiar datos a archivo txt

Mensaje por edgarivan6 el Lun Abr 13, 2015 8:46 pm

Excelente ayuda todo funciono perfecto

Muchas Gracias

edgarivan6

Masculino Cantidad de envíos : 5
Edad : 55
Ciudad - Pais : Ecuador
Version de Excel : 2007
Fecha de inscripción : 07/04/2015

Volver arriba Ir abajo

Copiar celdas al imprimir hojas

Mensaje por edgarivan6 el Vie Feb 26, 2016 7:51 pm

Saludos

anteriormente me dieron una ayuda con la siguente instruccion

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Archivotxt As String

Set fs = CreateObject("Scripting.FileSystemObject")
Archivotxt = "C:\Users\edgar\Documents\2015\VARIOS EXCEL\dato2.txt" '<---Ruta y nombre del Txt a crear

If Len(Dir(Archivotxt)) = 0 Then
Set a = fs.CreateTextFile(Archivotxt, True)
a.Close
End If

Set a = fs.OpenTextFile(Archivotxt,
texto = Range("T17").Value & " ; " & ActiveWorkbook.Name & " ; " & ActiveSheet.Name & " ; " & Range("f15").Value & " ; " & Format(Range("F17").Value, "dd/mm/yyyy") & " ; " & Format(Range("j17").Value, "h:mm:ss AM/PM")
a.WriteLine (texto) '<-----celda que se escribe en el Txt, se escribe en un renglon del txt
a.Close
Set fs = Nothing
Set Archivo = Nothing


End Sub


la instruccion funciona pefectamente
pero tambien se genera la accion cuando pongo vista preliminar de la hoja a imprimir antes de ser impresa lo cual me genera duplicados de las hojas impresas y vistas dependiendo del caso

esta instruccion se me ocurrio poner ya que necesito saber ciertos parametrios de las hojas impresas como nombres, fechas y codigos almacenados en las celdas selecionadas que luego son filtradas para revisar si no hay impresiones no autorizadas del libro usado



edgarivan6

Masculino Cantidad de envíos : 5
Edad : 55
Ciudad - Pais : Ecuador
Version de Excel : 2007
Fecha de inscripción : 07/04/2015

Volver arriba Ir abajo

Re: al imprimir hoja de excel copiar datos a archivo txt

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.