在使用Excel的过程中经常会碰到需要处理图形的时候。
在excel中插入图形后,它的位置和大小是最经常需要调整的。
在excel 2007版本以后,vba使用Shape对象来处理所有种类的图形对象,包括文本框,线条、图片等。
如果要用vba插入本地电脑中的图片,可以使用Shapes.AddPicture方法,它的语法如下:
expression.AddPicture (FileName, LinkToFile, SaveWithDocument, Left, Top, Width, Height)
其中Left, Top, Width, Height参数表示插入后的图片所在的左、上位置和宽度和高度。
以下代码列举了一些常用的处理图形对象的方法。
Sub QQ1722187970()
Dim oSP
Dim oWK As Worksheet
Dim sPath As String
sPath = "C:\Users\Ruibron\Pictures\头像.png"
Set oWK = ActiveSheet
'插入图片的代码
Set oSP = oWK.Shapes.AddPicture("C:\Users\Ruibron\Pictures\头像.png", msoCTrue, msoCTrue, 1, 1, 100, 100)
'重设图片大小的代码
With oSP
.ScaleHeight 1, msoCTrue, msoScaleFromTopLeft
.ScaleWidth 1, msoCTrue, msoScaleFromTopLeft
End With
'让图片填充到具体的单元格内的代码
With oSP
.Left = oWK.Range("b2").Left
.Top = oWK.Range("b2").Top
.Height = oWK.Range("b2").Height
.Width = oWK.Range("b2").Width
End With
End Sub
如果要用vba插入图形保持其原有的大小和长宽,需要注意把Shapes.AddPicture的Width, Height参数都设置为-1,那么就不会改变图片的原来大小了,如下所示:
Set oSP = oWK.Shapes.AddPicture("C:\Users\Ruibron\Pictures\头像.png", msoCTrue, msoCTrue, 1, 1, -1,-1)


发表评论