John spesso incolla schermate in una cartella di lavoro di Excel. Ha sempre bisogno di ritagliare questi elementi grafici su tutti e quattro i lati di una determinata quantità. Poiché svolge questo compito così spesso, si chiede se esiste un modo per farlo facilmente in una macro.

Esistono diversi modi per risolvere questo problema e tutti prevedono l’uso di macro. (Non ci sono comandi incorporati per eseguire tale operazione.) Se vuoi semplicemente ritagliare un’immagine che hai già aggiunto, puoi farlo usando una semplice macro come questa:

Sub CropPicture()

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

Ovviamente dovresti specificare i valori per il ritaglio. Questi valori sono specificati in punti e sono relativi alla dimensione originale dell’immagine. Quindi, ad esempio, se in precedenza hai ridimensionato l’immagine selezionata al 150% delle sue dimensioni originali e quindi esegui questa macro, tutte le impostazioni di ritaglio sembreranno essere 1,5 volte i loro valori effettivi. (Quindi, ad esempio, il ritaglio a sinistra sembrerebbe essere 300 pixel, non 200 pixel.)

La macro potrebbe essere facilmente modificata in modo che incolli e quindi ritagli automaticamente l’immagine. Questo viene fatto semplicemente aggiungendo un comando incolla di una sola riga:

Sub PasteCropPicture()

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

La macro presume che tu abbia precedentemente copiato la schermata negli Appunti; se provi a eseguirlo senza averlo fatto, potresti ricevere un errore.

C’è un’altra cosa da ricordare quando si esegue una macro come questa:

Al termine, sembrerà che l’immagine si sia spostata dalla sua posizione originale nel foglio di lavoro. Ciò si verifica perché il ritaglio da tutti e quattro i lati cambierà l’angolo superiore sinistro apparente dell’immagine in una posizione diversa. Puoi, se lo desideri, compensare questo nella tua macro aggiungendo del codice che “ricorda” l’angolo in alto a sinistra dell’immagine:

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

Naturalmente, c’è una cosa da ricordare quando si sceglie di ritagliare la grafica, indipendentemente da come si sceglie di farlo. Il ritaglio non influisce sulla dimensione dell’immagine. Quindi, ad esempio, se ritagli una schermata in modo che solo metà dello schermo sia visibile, tutte le parti “invisibili” della schermata sono ancora lì, occupando spazio. Ciò si aggiunge alla dimensione complessiva della tua cartella di lavoro, a volte in modo sorprendente.

L’unico modo per aggirare questo problema è non ritagliare alcun elemento grafico in Excel.

Elaborare invece l’immagine in un programma di grafica, salvare l’immagine elaborata e quindi inserire l’immagine elaborata nel foglio di lavoro. Il risultato sono cartelle di lavoro più piccole, il che significa un salvataggio e un caricamento più rapidi.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (11580) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.