Tabla de contenido
Si selecciona varios rangos de celdas en una hoja e intenta imprimir las celdas seleccionadas,
Consiga una hoja para cada una de las áreas seleccionadas.
La siguiente macro de ejemplo imprimirá todas las áreas seleccionadas en una hoja,
excepto si las áreas son demasiado grandes para caber en una hoja.
Sub PrintSelectedCells () 'imprime las celdas seleccionadas, se usa desde un botón de la barra de herramientas o un menú. ) Como un solo dim AWB como libro de trabajo, NWB como libro de trabajo Si UCase (TypeName (ActiveSheet)) "HOJA DE TRABAJO" Entonces Salir de Sub 'es útil solo en hojas de trabajo aCount = Selection.Areas.Count Si aCount = 0 Luego Salir de Sub' sin celdas seleccionadas cCount = Selection.Areas (1) .Cells.Count If aCount> 1 Entonces 'varias áreas seleccionadas Application.ScreenUpdating = False Application.StatusBar = "Imprimiendo" & aCount & "áreas seleccionadas …" Establecer AWB = ActiveWorkbook rCount = ActiveSheet.Cells.SpecialCells (xlLastCell) .Row cCount = ActiveSheet.Cells.SpecialCells (xlLastCell) .Column ReDim rHeight (rCount) ReDim cWidth (cCount) For i = 1 To rCount 'encuentre la altura de cada fila en la selección rHeight (i) = Rows (i) .RowHeight Next i For i = 1 To cCount 'encuentre el ancho de columna de cada columna en la selección cWidt h (i) = Columns (i) .ColumnWidth Siguiente i Establecer NWB = Workbooks.Add 'crear un nuevo libro de trabajo Para i = 1 Para rCount' establecer alturas de fila Filas (i) .RowHeight = rHeight (i) Siguiente i Para i = 1 Para cCount 'establecer anchos de columna Columnas (i) .ColumnWidth = cWidth (i) Siguiente i Para i = 1 Para aCount AWB.Active aRange = Selection.Areas (i) .Address' the range address Range (aRange) .Copy ' copiando el rango NWB.Activate With Range (aRange) 'pega valores y formatos .PasteSpecial Paste: = xlValues, Operation: = xlNone, _ SkipBlanks: = False, Transpose: = False .PasteSpecial Paste: = xlFormats, Operation: = xlNone, _ SkipBlanks: = False, Transpose: = False End With Application.CutCopyMode = False Next i NWB.PrintOut NWB.Close False 'cierra el libro temporal sin guardar Application.StatusBar = False AWB.Activate Set AWB = Nothing Set NWB = Nada más Si cCount <10 Entonces 'menos de 10 celdas seleccionadas Si MsgBox ("¿Está seguro de que desea imprimir" & _ cCount & "celdas seleccionadas?", _ VbQuestion + vbYesNo, "Imprimir celdas celebradas") = vbNo Th es Exit Sub End If Selection.PrintOut End If End Sub