Te anexo la macro para imprimir 2 recibos en una hoja. Lo que hace la macro es enviar el recibo de la hoja "Recibo Obreros Contratados" y lo pone 2 veces en la hoja "Formato", y por último, imprime la hoja "Formato".
Private Sub CommandButton4_Click()
'Por.Dante Amor
Application.ScreenUpdating = False
Set h1 = Sheets("Recibo Obreros Contratados")
Set h2 = Sheets("Formato")
h2.Cells.Clear
h2.DrawingObjects.Delete
'
h1.Range("A7:H" & h1.Range("C" & Rows.Count).End(xlUp).Row).Copy
h2.Range("A" & 1).PasteSpecial Paste:=xlValues
h2.Range("A" & 1).PasteSpecial Paste:=xlFormats
u2 = h2.Range("C" & Rows.Count).End(xlUp).Row + 2
h2.Range("A" & u2).PasteSpecial Paste:=xlValues
h2.Range("A" & u2).PasteSpecial Paste:=xlFormats
h2.Range("A" & 2).PasteSpecial Paste:=xlPasteColumnWidths
'
CopiarImagen h1, h2, 3
CopiarImagen h1, h2, u2 - 1
'
With h2.PageSetup
.PrintArea = "A1:G" & h2.Range("C" & Rows.Count).End(xlUp).Row
.Orientation = xlPortrait
.FitToPagesWide = 1
.FitToPagesTall = 1
.LeftMargin = Application.InchesToPoints(0.590551181102362)
.RightMargin = Application.InchesToPoints(0.590551181102362)
.TopMargin = Application.InchesToPoints(0.590551181102362)
.BottomMargin = Application.InchesToPoints(0.748031496062992)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
End With
'
h2.PrintOut Copies:=1, Collate:=True
h1.Select
MsgBox "Impresión realizada", vbInformation, "IMPRIMIR RECIBO"
End Sub
'
Sub CopiarImagen(h1, h2, u2)
'Por.Dante Amor
h1.Shapes("Imagen 1").Copy
h2.Select
h2.Paste
Selection.Top = Range("B" & u2).Top
Selection.Left = Range("B" & u2).Left + 20
h1.Shapes("Imagen 2").Copy
h2.Paste
Selection.Top = Range("G" & u2).Top
Selection.Left = Range("G" & u2).Left + 5
End Sub
Saludos.Dante Amor
Recuerda valorar la respuesta.
Hola, he visto que habéis ayudado a un usuario con su macro y necesito algo parecido, Tengo que imprimir tres recibos por hoja y no se como hacer para que automáticamente se me impriman en una misma hoja. La macro asignada al boton de imprimir es esta; Sub imprimir() inicio = Range("L6").Value fin = Range("O6").Value For i = inicio To fin Range("N2").FormulaR1C1 = i ActiveWindow.SelectedSheets.PrintOut Copies:=1 Next Range("N2") = "" End SubEsta macro coge los datos de una tabla excel y los pone en el recibo. Al darle a impirmir me imprime todos los recibos del rango seleccionado pero 1 recibo en cada hoja y no 3 por hoja. Saludo - sergio rodriguez perez
H ola: Podrías crear una nueva pregunta con lo que necesitas, dirige la pregunta a Dante Amor, para revisarla, es probable que necesite ver tu archivo para ajustar la macro. S aludos - Dante Amor