Tengo una herramienta que imprime en PDF, con el siguiente código:
Sub ExportPDF()
Dim sResultadoTipoICM As String
Dim sNombreProducto As String
sResultadoTipoICM = Hoja3.[O5].Value
If MsgBox("Antes de imprimir en PDF debe guardar el archivo en formato de Excel." & vbNewLine & _
"" & vbNewLine & _
"Tenga en cuenta que la impresión en PDF es el último paso en el uso del ICM.", _
vbYesNo, "¿ Ya guardó el ICM en formato de Excel?") = vbYes Then
If sResultadoTipoICM = "proTarjetas" Or sResultadoTipoICM = "proSeguimiento" Then
Sheets(Array("Informe Cualitativo")).Select
Else
Sheets(Array("Informe Cualitativo", "Planteamiento")).Select
End If
' NOMBRAR ARCHIVO Y SELECCIONAR CARPETA
Do
fName = Application.GetSaveAsFilename(InitialFileName:="Digite el nombre del ICM", Title:="Por favor ingrese nombre de archivo y seleccione carpeta")
Loop Until fName <> False
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fName, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:= _
False, OpenAfterPublish:=False
End If
End Sub
Lo que pasa es que me imprime la hoja "Planteamiento" completamente, no solo el área de impresión y eso no me sirve, por lo que cambié a que solamente me tome los rangos de impresión, para lo cual tengo la siguiente macro:
Sub ExportPDF()
Dim sResultadoTipoICM As String
Dim r1, r2, r3, r4, rng, rng2 As Range
Set r1 = Hoja1.Range("AreaDeImpresionCualitativo1")
Set r2 = Hoja1.Range("AreaDeImpresionCualitativo2")
Set r3 = Hoja1.Range("area_impresion_hoja1_3")
Set r4 = Hoja8.Range("print_area_planteamiento")
Set rng = Union(r1, r2, r3, r4)
Set rng2 = Union(r1, r2, r3)
sResultadoTipoICM = Hoja3.[O5].Value
If MsgBox("Antes de imprimir en PDF debe guardar el archivo en formato de Excel." & vbNewLine & _
"" & vbNewLine & _
"Tenga en cuenta que la impresión en PDF es el último paso en el uso del ICM.", _
vbYesNo, "¿ Ya guardó el ICM en formato de Excel?") = vbYes Then
If sResultadoTipoICM = "proSeguimiento" Then
rng2.Select
Else
rng.Select
End If
' NOMBRAR ARCHIVO Y SELECCIONAR CARPETA
Do
fName = Application.GetSaveAsFilename(InitialFileName:="Digite el nombre del ICM", Title:="Por favor ingrese nombre de archivo y seleccione carpeta")
Loop Until fName <> False
Selection.ExportAsFixedFormat Type:=xlTypePDF, fileName:=fName, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:= _
False, OpenAfterPublish:=False
End If
End Sub
Sin embargo no me funciona, ya que según entiendo, la Union, no me permite unir más de 3 rangos, por lo que cuando la respuesta es rng, me deja el r4 por fuera.
Las consultas son:
1. ¿Cómo podré hacer para que todos los rangos sean tomados en cuenta?
2. ¿Cómo podré prescindir del .select. para optimizar el código?
Les agradezco mucho su tiempo, conocimiento y colaboración que me puedan brindar.
Buen día y quedo atento.
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
Buenos días, gusto saludarles.
Tengo una herramienta que imprime en PDF, con el siguiente código:
Sub ExportPDF() Dim sResultadoTipoICM As String Dim sNombreProducto As String sResultadoTipoICM = Hoja3.[O5].Value If MsgBox("Antes de imprimir en PDF debe guardar el archivo en formato de Excel." & vbNewLine & _ "" & vbNewLine & _ "Tenga en cuenta que la impresión en PDF es el último paso en el uso del ICM.", _ vbYesNo, "¿ Ya guardó el ICM en formato de Excel?") = vbYes Then If sResultadoTipoICM = "proTarjetas" Or sResultadoTipoICM = "proSeguimiento" Then Sheets(Array("Informe Cualitativo")).Select Else Sheets(Array("Informe Cualitativo", "Planteamiento")).Select End If ' NOMBRAR ARCHIVO Y SELECCIONAR CARPETA Do fName = Application.GetSaveAsFilename(InitialFileName:="Digite el nombre del ICM", Title:="Por favor ingrese nombre de archivo y seleccione carpeta") Loop Until fName <> False ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fName, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:= _ False, OpenAfterPublish:=False End If End Sub
Lo que pasa es que me imprime la hoja "Planteamiento" completamente, no solo el área de impresión y eso no me sirve, por lo que cambié a que solamente me tome los rangos de impresión, para lo cual tengo la siguiente macro:
Sub ExportPDF() Dim sResultadoTipoICM As String Dim r1, r2, r3, r4, rng, rng2 As Range Set r1 = Hoja1.Range("AreaDeImpresionCualitativo1") Set r2 = Hoja1.Range("AreaDeImpresionCualitativo2") Set r3 = Hoja1.Range("area_impresion_hoja1_3") Set r4 = Hoja8.Range("print_area_planteamiento") Set rng = Union(r1, r2, r3, r4) Set rng2 = Union(r1, r2, r3) sResultadoTipoICM = Hoja3.[O5].Value If MsgBox("Antes de imprimir en PDF debe guardar el archivo en formato de Excel." & vbNewLine & _ "" & vbNewLine & _ "Tenga en cuenta que la impresión en PDF es el último paso en el uso del ICM.", _ vbYesNo, "¿ Ya guardó el ICM en formato de Excel?") = vbYes Then If sResultadoTipoICM = "proSeguimiento" Then rng2.Select Else rng.Select End If ' NOMBRAR ARCHIVO Y SELECCIONAR CARPETA Do fName = Application.GetSaveAsFilename(InitialFileName:="Digite el nombre del ICM", Title:="Por favor ingrese nombre de archivo y seleccione carpeta") Loop Until fName <> False Selection.ExportAsFixedFormat Type:=xlTypePDF, fileName:=fName, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:= _ False, OpenAfterPublish:=False End If End Sub
Sin embargo no me funciona, ya que según entiendo, la Union, no me permite unir más de 3 rangos, por lo que cuando la respuesta es rng, me deja el r4 por fuera.
Las consultas son:
1. ¿Cómo podré hacer para que todos los rangos sean tomados en cuenta?
2. ¿Cómo podré prescindir del .select. para optimizar el código?
Les agradezco mucho su tiempo, conocimiento y colaboración que me puedan brindar.
Buen día y quedo atento.