Обрезка графики в макросе (Microsoft Excel)
Джон часто вставляет снимки экрана в книгу 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.