John经常将屏幕截图粘贴到Excel工作簿中。他总是需要将所有四个面上的图形裁剪一定数量。因为他经常执行此任务,所以他想知道是否有一种方法可以在宏中轻松完成此任务。

您可以通过多种方法来解决此问题,并且所有方法都涉及到宏的使用。 (没有内置命令可以执行此任务。)如果仅想裁剪已添加的图形,则可以使用以下简单的宏来做到这一点:

Sub CropPicture()

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

当然,您需要指定裁剪的值。这些值以点为单位指定,并且相对于图片的原始大小。因此,例如,如果您先前将所选图片缩放到其原始大小的150%,然后运行此宏,则所有裁切设置将看起来是其实际值的1.5倍。 (因此,例如,左侧裁剪似乎是300像素,而不是200像素。)

可以轻松修改宏,以便粘贴并自动裁剪图像。只需添加单行粘贴命令即可完成:

Sub PasteCropPicture()

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

该宏假定您先前已将屏幕截图复制到剪贴板;如果您尝试运行它而没有这样做,则很可能会出错。

运行这样的宏时,还需要记住另一件事:

完成后,您的图像似乎已从工作表中的原始位置移开。发生这种情况是因为从所有四个侧面进行裁切都会将图像的外观左上角更改为其他位置。如果需要,可以在宏中通过添加“记住”图像左上角的代码来对此进行补偿:

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

当然,无论如何选择裁剪图形,都需要记住一件事。裁剪不会影响图像尺寸。因此,例如,如果裁剪屏幕快照以使仅屏幕的一半可见,则屏幕快照的所有“不可见”部分仍然存在,从而占用了空间。这会增加工作簿的整体大小,有时会如此惊人。

解决此问题的唯一方法是在Excel中不裁剪任何图形。

而是在图形程序中处理图像,保存处理后的图像,然后将处理后的图像插入工作表中。结果是较小的工作簿,这意味着可以更快地保存和加载。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11580)适用于Microsoft Excel 2007、2010、2013和2016。