# Control de impresión de hojas en un libro de excel



## DanielP (Jul 3, 2007)

Buenas tardes, espero me puedan ayudar con la sgte. consulta, ya la habia hecho en otro foro sin respuestas o comentarios, a la espera de sus buenos consejos.

Se puede hacer una macro que informe en una hoja llamemosle HOJA REPORTE las hojas que se han impreso de un libro, donde indique el día q se imprimio tal hoja, la cantida de veces que se imprimio y la hora de la impresión, de antemano gracias por sus comenntarios, este libro tendra aproximadamente unas 70 hojas.

Un buen amigo me paso la sgte macro días despúes de mi consulta, la he probado pero me salen errores no se cual sea el problema, espero me puedan dar la mano  



```
Private Sub Workbook_BeforePrint(Cancel As Boolean) 

Dim anombre As String 
Dim hojaa As Object 

For Each hojaa In ActiveWindow.SelectedSheets 
anombre = anombre & "," & hojaa.Name 
'Exit For 
Next 
'Si hay varias hojas seleccionadas se van a imprimir todas ellas. 
'En la variable "anombre" se memorizan los nombres de todas esas 
hojas seleccionadas (que se imprimen) 
'--------------- 

Select Case InputBox("Indica por favor tu clave de acceso.", 
"Privilegios del impresor...") 

'Aquí indica la clave tuya y la clave de la persona a la que 
autorices. La persona autorizada sólo conoce su clave: por ejemplo 
"clave222"; no conoce tu clave. 
Case "clave111", "clave222" 

MsgBox "Clave aceptada. Iniciando proceso..." 

'Aquí registrará en la Hoja7, en la columna "A", y en la 
primera fila que encuentre libre, el nombre de la hoja activa que será la que 
se imprime 
'y en la misma fila y siguiente columna te registrará el dia y 
la hora de la impresión. 

Sheets("Hoja7").Range("A45000").End(xlUp).Offset(1, 0) = 
ActiveSheet.Name 
Sheets("Hoja7").Range("A45000").End(xlUp).Offset(0, 1) = Now 

'aquí se anotan las hojas selecionadas por ejemplo: " 
,Hoja2,Hoja3,Hoja5" 
Sheets("Hoja7").Range("A45000").End(xlUp).Offset(0, 2) = 
anombre 


Case Else 
MsgBox "Necesitas la clave correcta.", , "Clave rechazada..." 
Cancel = True 
End Select 

End Sub
```


----------



## RalphA (Jul 8, 2007)

DanielP:

Después de unas pequeñas modificaciones a tu código, parece que funciona bien.  Tanteá el código modificado siguiente, en el cual mis cambios los prefijo con ''':


```
Sub Workbook_BeforePrint()
'''Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dim anombre As String
Dim hojaa As Object

For Each hojaa In ActiveWindow.SelectedSheets
  anombre = anombre & "," & hojaa.Name
  'Exit For
Next

'Si hay varias hojas seleccionadas se van a imprimir todas ellas.
'En la variable "anombre" se memorizan los nombres de todas esas

'***Tuve que agregar ' delante de la línea siguiente:
'hojas seleccionadas (que se imprimen)
'---------------

'***Tuve que hacer una sola línea de dos:
Select Case InputBox("Indica por favor tu clave de acceso.", "Privilegios del impresor...")

  'Aquí indica la clave tuya y la clave de la persona a la que
'***Tuve que agregar ' delante de las dos líneas siguientes:
  'autorices. La persona autorizada sólo conoce su clave: por ejemplo
  '"clave222"; no conoce tu clave.

Case "clave111", "clave222"
  MsgBox "Clave aceptada. Iniciando proceso..."

  'Aquí registrará en la Hoja7, en la columna "A", y en la
  'primera fila que encuentre libre, el nombre de la hoja activa que será la que
'***Tuve que agregar ' delante de la línea siguiente:
  'se imprime
  'y en la misma fila y siguiente columna te registrará el dia y
'***Tuve que agregar ' delante de la línea siguiente:
  'la hora de la impresión.

'***Tuve que hacer una sola línea de dos:
  Sheets("Hoja7").Range("A45000").End(xlUp).Offset(1, 0) = ActiveSheet.Name
  Sheets("Hoja7").Range("A45000").End(xlUp).Offset(0, 1) = Now

  'aquí se anotan las hojas selecionadas por ejemplo: "
'***Tuve que agregar ' delante de la línea siguiente:
  ',Hoja2,Hoja3,Hoja5"
'***Tuve que hacer una sola línea de dos:
  Sheets("Hoja7").Range("A45000").End(xlUp).Offset(0, 2) = anombre


Case Else
  MsgBox "Necesitas la clave correcta.", , "Clave rechazada..."
  Cancel = True
End Select

End Sub
```
[/code]


----------



## DanielP (Jul 8, 2007)

*Problema con el codigo de control de impresión en un libro*

Hola Ralph sobre la macro nueva que has enviado tengo el sgte. problema

cuando quiero imprimir la hoja me sale el sgte. mensaje

Error de Compilación:
La declaración del procedimiento no coincide con la descripción del evento o el procedimiento que tiene el mismo nombre.

y se resalta la sgte. linea del codigo
Sub Workbook_BeforePrint

Si gustas te mando el archivo a tu correo ya que no veo la opción de poner el archivo de muestra.

Mi correo personal es ldpc4_arroba_yahoo.com

<hr />
17.07.07: Dirección de correo-e editado por Greg para cambiar la arroba del símbolo a la palabra para evitar que los "bots" agarren la dirección de Daniel. :wink:


----------



## galileogali (Jul 9, 2007)

Cambia el Workbook_BeforePrint() por Workbook_BeforePrint(Cancel as Boolean)


----------



## RalphA (Jul 9, 2007)

Daniel:

Creo que Gali sabe lo que dice.  Hacele caso.


----------

