Come inserire un’immagine in Excel in una posizione di cella specificata con VBA

Aggiungo i file “.jpg” al mio foglio Excel con il seguente codice:

'Add picture to excel xlApp.Cells(i, 20).Select xlApp.ActiveSheet.Pictures.Insert(picPath).Select 'Calgulate new picture size With xlApp.Selection.ShapeRange .LockAspectRatio = msoTrue .Width = 75 .Height = 100 End With 'Resize and make printable With xlApp.Selection .Placement = 1 'xlMoveAndSize '.Placement = 2 'xlMove '.Placement = 3 'xlFreeFloating .PrintObject = True End With 

Non so cosa sto facendo male ma non viene inserito nella cella a destra, quindi cosa dovrei fare per inserire questa immagine in una cella specificata in Excel?

Prova questo:

 With xlApp.ActiveSheet.Pictures.Insert(PicPath) With .ShapeRange .LockAspectRatio = msoTrue .Width = 75 .Height = 100 End With .Left = xlApp.ActiveSheet.Cells(i, 20).Left .Top = xlApp.ActiveSheet.Cells(i, 20).Top .Placement = 1 .PrintObject = True End With 

È meglio non selezionare niente in Excel, in genere non è mai necessario e rallenta il codice.

Ho lavorato su un sistema che funzionava su PC e Mac e stavo lottando per trovare il codice che ha funzionato per l’inserimento di immagini su PC e Mac. Questo ha funzionato per me, quindi spero che qualcun altro possa farne uso!

Nota: le variabili strPictureFilePath e strPictureFileName devono essere impostate su percorsi PC e Mac validi, ad es.

Per PC: strPictureFilePath = “E: \ Dropbox \” e strPictureFileName = “TestImage.jpg” e con Mac: strPictureFilePath = “Macintosh HD: Dropbox:” e strPictureFileName = “TestImage.jpg”

Codice come segue:

  On Error GoTo ErrorOccured shtRecipeBrowser.Cells(intDestinationRecipeRowCount, 1).Select ActiveSheet.Pictures.Insert(Trim(strPictureFilePath & strPictureFileName)).Select Selection.ShapeRange.Left = shtRecipeBrowser.Cells(intDestinationRecipeRowCount, 1).Left Selection.ShapeRange.Top = shtRecipeBrowser.Cells(intDestinationRecipeRowCount, 1).Top + 10 Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Height = 130 

Se si tratta semplicemente di inserire e ridimensionare un’immagine, provare il seguente codice.

Per la domanda specifica che hai chiesto, la proprietà TopLeftCell restituisce l’object intervallo relativo alla cella in cui è parcheggiato l’angolo in alto a sinistra. Per posizionare una nuova immagine in un punto specifico, consiglio di creare un’immagine nella posizione “giusta” e di registrare i valori delle proprietà superiore e sinistra del dummy su due variabili.

Inserisci il tuo Pic assegnato a una variabile per cambiare facilmente il suo nome. L’object Shape avrà lo stesso nome dell’object immagine.

 Sub Insert_Pic_From_File(PicPath as string, wsDestination as worksheet) Dim Pic As Picture, Shp as Shape Set Pic = wsDestination.Pictures.Insert(FilePath) Pic.Name = "myPicture" 'Strongly recommend using a FileSystemObject.FileExists method to check if the path is good before executing the previous command Set Shp = wsDestination.Shapes("myPicture") With Shp .Height = 100 .Width = 75 .LockAspectRatio = msoTrue 'Put this later so that changing height doesn't change width and vice-versa) .Placement = 1 .Top = 100 .Left = 100 End with End Sub 

In bocca al lupo!