VBA Excel 2010 - 嵌入图片和调整大小

awe*_*orn 7 excel vba excel-vba

我已经潜伏了一段时间,发现它非常有用,所以感谢你的帮助!

我正在尝试编写一个宏来将图像嵌入到单个文件的工作表中并调整它们的大小,同时如果需要再次放大,则保持图像的完整分辨率不变.首先我试过:

ActiveSheet.Pictures.Insert(imageName).Select
With Selection.ShapeRange
    .Height = 100
    .Width = 100
End With
Run Code Online (Sandbox Code Playgroud)

这基本上插入了图片的链接,如果图像文件被删除或excel文件移动到另一台计算机,链接将被破坏.接下来我尝试了:

ActiveSheet.Shapes.AddPicture Filename:=imageName, _
    linktofile:=msoFalse, _
    savewithdocument:=msoCTrue, _
    Width:=100, _
    Height:=100
Run Code Online (Sandbox Code Playgroud)

此代码也有效,但插入前图像大小调整为100*100像素,因此原始文件分辨率会丢失.

有没有办法插入图像文件,然后缩小它们的大小,以便保留原始分辨率?

非常感谢,亚当.

Mik*_*keD 16

首先将图片加载并放置在原始大小中,然后在第二步中根据需要调整大小.您只需指定EITHER宽度或高度以保留纵横比.

Sub Test()
Dim MySht As Worksheet
Dim MyPic As Shape
Dim MyLeft As Single, MyTop As Single

    ' position in Pixel relative to top/left of sheet
    MyTop = 50
    MyLeft = 50

    ' alternatively position to the top/left of [range] C3
    MyTop = [C3].Top
    MyLeft = [C3].Left

    ' alternatively position to top/left of actual scrolled position
    MyTop = Cells(Windows(1).ScrollRow, Windows(1).ScrollColumn).Top
    MyLeft = Cells(Windows(1).ScrollRow, Windows(1).ScrollColumn).Left


    Set MySht = ActiveSheet
    Set MyPic = MySht.Shapes.AddPicture("C:\Users\MikeD\Desktop\Untitled.png", _
                msoFalse, msoTrue, MyLeft, MyTop, -1, -1)
    '      ^^^  LinkTo    SaveWith                -1 = keep size

    ' now resize pic
    MyPic.Height = 100

End Sub
Run Code Online (Sandbox Code Playgroud)

...并尽量避免.Select...... Dim你需要的对象并使用它们.