Macro para imprimir intervalos de hojas

Me podrían ayudar a modificar esta macro para que me de la opción de imprimir todas las hojas o un intervalo de hojas según mi necesidades pero con tres condiciones.

Primera condición: que me imprima todas las hojas que tenga datos en la Celda C8 de las 11 hojas que tengo en el libro. Por ejemplo si no tengo datos en la celda C8 de la página 9 no la imprima y así sucesivamente. Pero si todas tienen datos en C8 si imprima todas.

Segunda condición: de que pueda seleccionar el intervalo de páginas por ejemplo: de la página 2 a la 5

Tercera condición: que no me imprima la hoja con el nombre REMAFE ya que ahí tengo el botón de comando de imprimir, se la quise eliminar de la macro pero al hacerlo ya no me funciono. Por eso la deje ahí

encontré esta opción ActiveSheet.PrintOut From:=2, To:=11, Copies:=1 pero no se como integrarlo a la macro.

Sub Botón2_Haga_clic_en()
'mostrar un inputbox para ingresar datos
Dim pagina As String
pagina = InputBox("Ingrese número de pagina a imprimir", "IMPRIMIR")
'si el dato es igual a "..." entonces ...
If pagina = "REMAFE" Then
Sheets("REMAFE").Select 'se situa en la hoja2
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Else
If pagina = "2" Then
Sheets("Pag 2").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Else
If pagina = "3" Then
Sheets("Pag 3").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Else
If pagina = "4" Then
Sheets("Pag 4").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
If pagina = "5" Then
Sheets("Pag 5").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Else
If pagina = "6" Then
Sheets("Pag 6").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Else
If pagina = "7" Then
Sheets("Pag 7").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Else
If pagina = "8" Then
Sheets("Pag 8").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Else
If pagina = "9" Then
Sheets("Pag 9").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Else
If pagina = "10" Then
Sheets("Pag 10").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Else
If pagina = "11" Then
Sheets("Pag 11").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Else

MsgBox "Ese número de página no existe", vbExclamation, "PAGINA INCORRECTA"
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End Sub

Respuesta
2

H o l a : Como son varias condiciones, te sugiero que utilices un formulario.

Crea un formulario con lo siguiente:


Pon el siguiente código en el formulario:

Private Sub CommandButton1_Click()
'Por.Dante Amor
    'validaciones
    If TextBox3 = "" Or Not IsNumeric(TextBox3) Then
        MsgBox "Captura el número de copias"
        TextBox3.SetFocus
        Exit Sub
    End If
    If OptionButton2 Then
        If TextBox1 = "" Or Not IsNumeric(TextBox1) Then
            MsgBox "Captura el número desde"
            TextBox1.SetFocus
            Exit Sub
        End If
        If TextBox2 = "" Or Not IsNumeric(TextBox2) Then
            MsgBox "Captura el número hasta"
            TextBox2.SetFocus
            Exit Sub
        End If
        If TextBox1 > TextBox2 Then
            MsgBox "El número desde debe ser menor"
            TextBox1.SetFocus
            Exit Sub
        End If
    End If
    '
    'Rango de Hojas a imprimir
    If OptionButton1 Then
        desde = 1
        hasta = Sheets.Count
    Else
        desde = Val(TextBox1)
        hasta = Val(TextBox2)
    End If
    '
    n = 0
    If CheckBox1 Then
        Sheets("REMAFE").PrintOut copies:=Val(TextBox3)
        n = n + 1
    End If
    For i = desde To hasta
        hoja = "Pag " & i
        For Each h In Sheets
            If UCase(h.Name) = UCase(hoja) Then
                imprime = True
                If CheckBox2 Then
                    If h.Range("C8") = "" Then imprime = False
                End If
                If imprime Then
                    h.PrintOut copies:=Val(TextBox3)
                    n = n + 1
                End If
            End If
        Next
    Next
    '
    MsgBox "Se enviaron a imprimir: " & n & " hojas.", vbInformation, "Impresión realizada"
End Sub
'
Private Sub UserForm_Activate()
'Por.Dante Amor
    TextBox3 = 1
    OptionButton1 = True
    CheckBox2 = True
End Sub
'
Private Sub CommandButton2_Click()
    Unload Me
End Sub

Instrucciones para userform

  1. Abre tu hoja de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / UserForm
  4. Le das dobleclik en cualquier parte del Panel del userForm y copias la macro
  5. En el panel del UserForm creas los controles que aparecen en la imagen.

Si tienes dudas de cómo crear el formulario. Envíame tu archivo para adaptarle el formulario.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Luis Enrique Martinez Gomez” y el título de esta pregunta.

Avísame en esta pregunta cuando me lo hayas enviado.


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

Buen día amigo Dante ya te envié el archivo a tu correo para que lo revises por favor

espero tu respuesta. Gracias...

Listo, te envié un archivo con el formulario funcionando.

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

¡Gracias! Amigo Dante quedo muy bien el archivo ya lo probé y si funciono sin problemas.

Saludos...

Atentamente.

Luis Enrique

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas