Solo poder imprimir mediante la macro

Que tal es la primera vez que escribo y me ha saltado una enorme duda:

En otros blogs he visto que se puede deshabilitar la impresión en excel (cosa que ya logre e incluso le inserté un cuadro que dice "NO SE PUEDE IMPRIMIR POR ESTE MEDIO UTILICE EL BOTÓN SEÑALADO" que este caso es la macro, pero obviamente al impedir la impresión mediante WorkBook, la macro que había habilitado (y que solo imprime bajo ciertas condiciones) no hace su función.

Lo que requiero es que la macro si pueda imprimir, a pesar de que la opción este deshabilitada mediante el menú archivo: les dejo el desarrollo de la macro en cuestión

Private Sub CommandButton12_Click()
Range("W29").Select
If ActiveCell.Value = 0 Then
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End If
End Sub

Respuesta
3

Pon la siguiente macro en los eventos de Thisworkbook

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Por.Dante Amor
    If boton = False Then
        MsgBox "NO SE PUEDE IMPRIMIR POR ESTE MEDIO UTILICE EL BOTÓN SEÑALADO", vbCritical, "ERROR"
        Cancel = True
    End If
    boton = False
End Sub

Instrucciones para poner la macro en los eventos ThisWorkbook

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a ThisWorkbook
  4. En el panel del lado derecho copia la macro

Ahora en tu botón de impresión pon el siguiente código, revisa que al principio de todo el código debe quedar la declaración de la variable boton

Public boton As Boolean
'
Private Sub CommandButton12_Click()
'Por.Dante Amor
    boton = True
    If Range("W29").Value = 0 Then
        ActiveSheet.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    End If
    boton = False
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Hola me apareció el mensaje "se ha producido el error 28 en tiempo de ejecución: espacio de pila insuficiente 

Revisa que hayas copiado correctamente las macro completas.

¿Modificaste alguna macro?

La línea:

Public boton As Boolean

Debe estar hasta arriba de todas las macros, debe ser la primera línea de todo el código.

Comenta si tienes más macros.

Si no tienes más macros, revisa que hayas copiado correctamente las 2 macros.

La macro 1 va en los evento de Thisworkbook

La macro 2 va en un módulo.

Si tienes la opción de presionar un botón que dic "Debug", presiona el botón y dime en qué línea de la macro se detiene.

Si tengo más macros para hacen otras tareas diferentes a la de impresión, la instrucción que comentas "Public Boton As Boolean" la pongo encima de todas las otras macros, aunque hagan tareas diferentes?

Y no, no modifique la macro

Muchas gracias por la ayuda :)

Sí, debe ir al principio de todas las macro, debe ser la línea 1

Creo que el problema esta con el nombre puesto que no nombre las macro al principio y me aparecen como "CommandButton" todas (cambiando de nombre), entonces cuando coloque la orden a la cabeza de todas me dice que el nombre es muy ambiguo 

Cambia el nombre al botón, por ejemplo commandbutton1 y asignas la macro commandbutton1

Al commandbutton2 la macro commandbutton2.

O crea otros botones.

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: nombre_macro
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

En un módulo nuevo pon esto

Public boton As Boolean
'
Sub nombre_macro()
'Por.Dante Amor
    boton = True
    If Range("W29").Value = 0 Then
        ActiveSheet.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    End If
    boton = False
End Sub


O empieza de nuevo y para commandbutton le vas asignando un código

Pero debes tener códigos con nombre diferente, por ejemplo

Commandbutton1

Commandbutton2

Commandbutton3

Commandbutton4

...

Commandbutton12

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas