En este artículo, crearemos una macro para imprimir datos de diferentes hojas.

Tenemos diferentes datos en bruto en dos hojas y queremos personalizar la impresión de estas hojas.

ArrowRawFirst

ArrowRawSecond

ArrowMain

Antes de ejecutar la macro, tenemos que especificar el tipo de impresión requerida y especificar el nombre, rango o vista personalizada.

ArrowCustomView

Hemos creado una vista personalizada «customView1».

Explicación lógica

Hemos creado la macro «PrintReports» para la impresión personalizada. Esta macro se repetirá desde la celda A13 hasta la última fila. Podemos especificar tres tipos diferentes para la impresión personalizada.

Para el tipo 1, necesitamos especificar el nombre de la hoja en la siguiente columna.

Para el tipo 2, necesitamos especificar el rango para el que queremos la impresión.

Para el tipo 3, necesitamos especificar el nombre de la vista personalizada.

Explicación del código

Para cada celda1 en el rango («A13», ActiveCell.End (xlDown))

El código anterior se usa para recorrer desde la celda A13 hasta la última fila.

DefinedName = ActiveCell.Offset (0, 1) .Value El código anterior se usa para obtener el valor de la celda en la siguiente columna de la celda activa.

Seleccionar caso Cell1.Value Caso 1 ‘Seleccionar la hoja definida Hojas (DefinedName) .Seleccionar caso 2’ Seleccionar el rango definido Application.Goto Reference: = DefinedName Case 3 ‘Seleccionar la vista personalizada definida ActiveWorkbook.CustomViews (DefinedName) .Mostrar Fin Seleccionar La declaración de selección anterior se utiliza para seleccionar el área especificada en función del tipo definido por el usuario.

ActiveWindow.SelectedSheets.PrintOut El código anterior se utiliza para imprimir el área seleccionada.

Siga el código a continuación

Option Explicit

Sub PrintReports()

'Declared variables

Dim DefinedName As String

Dim Cell1 As Range

'Disabling screen updates

Application.ScreenUpdating = False

'Looping through all the cells

For Each Cell1 In Range("A13", ActiveCell.End(xlDown))

Sheets("Main").Activate



'Selecting the cell

Cell1.Select



'Getting value of sheet name or defined range

DefinedName = ActiveCell.Offset(0, 1).Value



Select Case Cell1.Value



Case 1

'Selecting the defined sheet

Sheets(DefinedName).Select

Case 2

'Selecting the defined range

Application.Goto Reference:=DefinedName

Case 3

'Selecting the defined custom view

ActiveWorkbook.CustomViews(DefinedName).Show

End Select



'Printing the required data

ActiveWindow.SelectedSheets.PrintOut



Next

Application.ScreenUpdating = True

End Sub

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]