Comment insérer une image dans Excel à une position précise de la cellule avec VBA
je suis en ajoutant ".jpg" des fichiers sur ma feuille Excel avec le code ci-dessous :
'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
Je ne sais pas ce que je fais mal, mais il ne s'insère pas dans la bonne cellule, alors que dois-je faire pour mettre cette image dans une cellule spécifiée dans Excel?
3 réponses
essaye ceci:
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
il vaut mieux ne pas le faire .sélectionnez n'importe quoi dans Excel, il est généralement jamais nécessaire et ralentit votre code.
j'ai travaillé sur un système qui fonctionnait sur un PC et Mac et luttait pour trouver du code qui fonctionnait pour insérer des images à la fois sur PC et Mac. Cela a fonctionné pour moi donc espérons que quelqu'un d'autre peut s'en servir!
Note: les variables strPictureFilePath et strPictureFileName doivent être définies à des chemins PC et Mac valides Eg
pour PC: strPictureFilePath = "E:\Dropbox\ "and strPictureFileName =" TestImage.jpg "et avec Mac: strPictureFilePath =" Macintosh HD:Dropbox: "and strPictureFileName =" témoignage.jpg"
Code comme suit:
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
S'il s'agit simplement d'insérer et de redimensionner une image, essayez le code ci-dessous.
pour la question spécifique que vous avez posée, la propriété TopLeftCell renvoie l'objet range lié à la cellule où le coin supérieur gauche est stationné. Pour placer une nouvelle image à un endroit précis, je recommande de créer une image à l'endroit "droit" et d'enregistrer ses propriétés supérieures et gauches du mannequin sur des variables doubles.
Insérez votre Pic assigné à une variable pour changer facilement de son nom. L'objet Shape aura le même nom que l'objet Picture.
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
Bonne chance!