Cắt đồ họa trong Macro (Microsoft Excel)
John thường dán ảnh chụp màn hình vào sổ làm việc Excel. Anh ta luôn luôn cần cắt những hình ảnh này trên tất cả bốn mặt theo một số lượng nhất định. Bởi vì anh ấy làm nhiệm vụ này rất thường xuyên, anh ấy tự hỏi liệu có cách nào để thực hiện nó dễ dàng trong macro không.
Có một số cách bạn có thể giải quyết vấn đề này và tất cả chúng đều liên quan đến việc sử dụng macro. (Không có lệnh tích hợp nào để thực hiện tác vụ như vậy.) Nếu bạn chỉ muốn cắt một hình ảnh mà bạn đã thêm vào, bạn có thể làm như vậy bằng cách sử dụng một macro đơn giản như sau:
Sub CropPicture() With Selection.ShapeRange.PictureFormat .CropLeft = 200 .CropTop = 300 .CropBottom = 50 .CropRight = 100 End With End Sub
Tất nhiên, bạn sẽ cần chỉ định các giá trị cho việc cắt xén. Các giá trị này được xác định bằng điểm và chúng có liên quan đến kích thước ban đầu của hình ảnh. Vì vậy, ví dụ: nếu trước đó bạn đã thu nhỏ ảnh đã chọn xuống 150% so với kích thước ban đầu của nó, và sau đó bạn chạy macro này, tất cả các cài đặt cắt sẽ có vẻ bằng 1,5 lần giá trị thực của chúng. (Ví dụ: phần cắt bên trái sẽ có vẻ là 300 pixel, không phải 200 pixel.)
Có thể dễ dàng sửa đổi macro để nó thực hiện việc dán và sau đó tự động cắt hình ảnh. Điều này được thực hiện bằng cách chỉ cần thêm một lệnh dán một dòng:
Sub PasteCropPicture() ActiveSheet.Paste With Selection.ShapeRange.PictureFormat .CropLeft = 200 .CropTop = 300 .CropBottom = 50 .CropRight = 100 End With End Sub
Macro giả định rằng trước đó bạn đã sao chép ảnh chụp màn hình vào Clipboard; nếu bạn cố gắng chạy nó mà không làm như vậy, bạn cũng có thể gặp lỗi.
Có một điều khác cần nhớ khi chạy macro như sau:
Khi hoàn tất, sẽ xuất hiện thông báo rằng hình ảnh của bạn đã di chuyển khỏi vị trí ban đầu trong trang tính. Điều này xảy ra vì việc cắt từ cả bốn cạnh sẽ thay đổi góc trên bên trái rõ ràng của hình ảnh thành một vị trí khác. Nếu muốn, bạn có thể bù đắp điều này trong macro của mình bằng cách thêm mã “ghi nhớ” góc trên bên trái của hình ảnh:
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
Tất nhiên, có một điều cần nhớ khi bạn chọn cắt đồ họa, bất kể bạn chọn cách nào. Việc cắt xén không ảnh hưởng đến kích thước hình ảnh. Vì vậy, ví dụ: nếu bạn cắt ảnh chụp màn hình để chỉ hiển thị một nửa màn hình, tất cả các phần “vô hình” của ảnh chụp màn hình vẫn ở đó, chiếm không gian. Điều này làm tăng kích thước tổng thể của sổ làm việc của bạn, đôi khi đáng kinh ngạc như vậy.
Cách duy nhất để giải quyết vấn đề này là not cắt bất kỳ đồ họa nào trong Excel.
Thay vào đó, hãy xử lý hình ảnh trong chương trình đồ họa, lưu hình ảnh đã xử lý của bạn rồi chèn hình ảnh đã xử lý đó vào trang tính. Kết quả là các sổ làm việc nhỏ hơn có nghĩa là lưu và tải nhanh hơn.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (11580) áp dụng cho Microsoft Excel 2007, 2010, 2013 và 2016.