John pega a menudo capturas de pantalla en un libro de Excel. Invariablemente, necesita recortar estos gráficos en los cuatro lados en una cantidad determinada. Debido a que hace esta tarea con tanta frecuencia, se pregunta si hay una manera de hacerlo fácilmente en una macro.

Hay varias formas de abordar este problema y todas implican el uso de macros. (No hay comandos integrados para realizar esta tarea). Si simplemente desea recortar un gráfico que ya ha agregado, puede hacerlo usando una macro simple como esta:

Sub CropPicture()

With Selection.ShapeRange.PictureFormat         .CropLeft = 200         .CropTop = 300         .CropBottom = 50         .CropRight = 100     End With End Sub

Por supuesto, necesitaría especificar los valores para el recorte. Estos valores se especifican en puntos y son relativos al tamaño original de la imagen. Entonces, por ejemplo, si previamente escalaste la imagen seleccionada al 150% de su tamaño original, y luego ejecutas esta macro, todas las configuraciones de recorte parecerán ser 1.5 veces sus valores reales. (Entonces, por ejemplo, el recorte a la izquierda parecería ser 300 píxeles, no 200 píxeles).

La macro podría modificarse fácilmente para que pegue y luego recorte automáticamente la imagen. Esto se hace simplemente agregando un comando de pegar de una sola línea:

Sub PasteCropPicture()

ActiveSheet.Paste     With Selection.ShapeRange.PictureFormat         .CropLeft = 200         .CropTop = 300         .CropBottom = 50         .CropRight = 100     End With End Sub

La macro asume que previamente copió la captura de pantalla en el Portapapeles; si intenta ejecutarlo sin haberlo hecho, es posible que obtenga un error.

Hay otra cosa para recordar al ejecutar una macro como esta:

Cuando termine, parecerá que su imagen se ha movido de su posición original en la hoja de trabajo. Esto ocurre porque el recorte de los cuatro lados cambiará la aparente esquina superior izquierda de la imagen a una ubicación diferente. Puede, si lo desea, compensar esto en su macro agregando código que «recuerda» la esquina superior izquierda de la imagen:

Sub CropPositionPicture()

Dim MyShape As Shape     Dim LeftSide As Single     Dim TopSide As Single

Set MyShape = Selection.ShapeRange     LeftSide = MyShape.Left     TopSide = MyShape.Top

With MyShape.PictureFormat         .CropLeft = 200         .CropTop = 300         .CropBottom = 50         .CropRight = 100     End With

MyShape.Left = LeftSide     MyShape.Top = TopSide End Sub

Por supuesto, hay una cosa que debe recordar cuando elige recortar gráficos, independientemente de cómo elija hacerlo. El recorte no afecta el tamaño de la imagen. Entonces, por ejemplo, si recorta una captura de pantalla de modo que solo la mitad de la pantalla sea visible, todas las partes «invisibles» de la captura de pantalla seguirán allí, ocupando espacio. Esto se suma al tamaño general de su libro de trabajo, a veces de manera sorprendente.

La única forma de evitar esto es no recortar ningún gráfico dentro de Excel.

En su lugar, procese la imagen en un programa de gráficos, guarde su imagen procesada y luego inserte esa imagen procesada en la hoja de trabajo. El resultado son libros de trabajo más pequeños, lo que significa un almacenamiento y una carga más rápidos.

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (11580) se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.