如何在excel中用vba插入并调整图形的大小位置?

在使用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)
       

发表评论