Macro para imprimir rangos según criterios en un documento PDF

Soy un mero principiante en macros que esta intentando crear una para imprimir unos rangos de una hoja de excel 2010 según un criterio de VERDADERO (falso lo omite) en un solo documento PDF, respetando el orden de impresión y no lo consigo. He creado esta macro pero no me hace nada y no se porque. ¿Me podéis ayudar?

Sub PDF_Pruebas_Todo()

Application.ScreenUpdating = False

Dim strImpresoraAnterior As String
Dim Sh As Variant

With Application
strImpresoraAnterior = .ActivePrinter
.ActivePrinter = "PDFCreator en Ne00:"

Sh = Sheets("COND Y TARIF").Range("BB3")

If Sh = "VERDADERO" Then
Sheets("COND Y TARIF").Range("A1:AJ602").PrintOut
End If

Sh = Sheets("COND Y TARIF").Range("BE3")

If Sh = "VERDADERO" Then
Sheets("COND Y TARIF").Range("A603:AJ682").PrintOut
End If

Sh = Sheets("COND Y TARIF").Range("BG3")

If Sh = "VERDADERO" Then
Sheets("COND Y TARIF").Range("A683:AJ764").PrintOut
End If

Sh = Sheets("COND Y TARIF").Range("BH3")

If Sh = "VERDADERO" Then
Sheets("COND Y TARIF").Range("A1245:AJ1313").PrintOut
End If

Sh = Sheets("COND Y TARIF").Range("BI3")

If Sh = "VERDADERO" Then
Sheets("COND Y TARIF").Range("A1156:AJ1244").PrintOut
End If

Sh = Sheets("COND Y TARIF").Range("BJ3")

If Sh = "VERDADERO" Then
Sheets("COND Y TARIF").Range("A1314:AJ1384").PrintOut
End If

Sh = Sheets("COND Y TARIF").Range("BK3")

If Sh = "VERDADERO" Then
Sheets("COND Y TARIF").Range("A765:AJ843").PrintOut
End If

Sh = Sheets("COND Y TARIF").Range("BL3")

If Sh = "VERDADERO" Then
Sheets("COND Y TARIF").Range("A844:AJ1155").PrintOut
End If

Sh = Sheets("FICHA").Range("O10")

If Sh = "INCREMENTO" Then
Sheets("CARTA INCREMENTO").PrintOut Copies:=1, Collate:=True
End If

Sh = Sheets("FICHA").Range("O10")

If Sh = "RENOVACION" Then
Sheets("CARTA RENOVACION").PrintOut Copies:=1, Collate:=True
End If

Sh = Sheets("FICHA").Range("O10")

If Sh = "REVISION" Then
Sheets("CARTA REVISION").PrintOut Copies:=1, Collate:=True
End If

If .ActivePrinter <> strImpresoraAnterior Then .ActivePrinter = strImpresoraAnterior
End With
Application.ScreenUpdating = True

End Sub

1 Respuesta

Respuesta
1

Si necesitas imprimir todo en un sólo PDF, debes copiar cada rango uno debajo del otro en una hoja auxiliar y luego imprimir esa hoja.

Para copiar los rangos debes utilizar una variable que te vaya guardando la última fila ocupada como por ejemplo:

Finx = Range("A" & Rows.Count).End(xlup).row + 1

En lugar de sumar 1 podrías sumar más filas si quisieras dejar un espacio entre cada copia.

Para obtener las instrucciones de 'copia y pega' podes utilizar la grabadora.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas