VBA Excel: Macro para imprimir todas las Hojas en un mismo documento

He estado buscando en internet la respuesta a mi problema y he encontrado un caso en el que te planteaban algo parecido y quizá puedas ayudarme ...

Tengo una macro que genera una serie de pestañas a partir de unos datos de entrada. Una vez creadas todas las pestañas, querría imprimirlas en PDF, pero todas en un único documento.

Para ello tengo este Use Form:

Private Sub Label1_Click()
End Sub

Private Sub CommandButton1_Click()
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
h = ListBox1.List(i)
Sheets(h).PrintOut Copies:=1, Collate:=True
End If
Next
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()
Dim Hoja As Worksheet

ListBox1.MultiSelect = fmMultiSelectMulti
CommandButton1.Caption = "Imprimir"
CommandButton2.Caption = "Salir"
For Each Hoja In ThisWorkbook.Worksheets
ListBox1.AddItem (Hoja.Name)
Next Hoja

Set Hoja = Nothing
End Sub

En él se imprime cada hoja en un pdf diferente, no todas en un mismo documento que es lo que busco.

A parte de esto, en el Use Form existe algún error porque a pesar de seleccionar una o dos pestañas para imprimir se sigue ejecutando el cuadro de diálogo para la impresión hasta que lo cierras manualmente, supongo que la condición de uno de los bucles no será adecuada, pero este error no me preocupa tanto como el primero.

1 Respuesta

Respuesta
1

H o  l a:

Reemplaza el código del commmanbutton, por el siguiente:

Private Sub CommandButton1_Click()
'Act.Por.Dante Amor
    una = True
    existe = False
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            existe = True
            h = ListBox1.List(i)
            If una Then
                una = False
                Sheets(h).Select
            Else
                Sheets(h).Select Replace:=False
            End If
        End If
    Next
    If existe Then
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    End If
End Sub

S a l u d o s . D a n t e   A m o r. Recuerda valorar la respuesta. G r a c i a s

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas