我已经潜伏了一段时间,发现它非常有帮助,所以感谢您的帮助!
我正在尝试编写一个宏来将图像嵌入到单个文件的工作表中并调整它们的大小,同时如果需要再次放大,则保持图像的完整分辨率不变。首先我试过了:
ActiveSheet.Pictures.Insert(imageName).Select
With Selection.ShapeRange
.Height = 100
.Width = 100
End With
这实际上插入了图片的链接,如果图像文件被删除或excel文件移动到另一台计算机,链接将被破坏。接下来我尝试了:
ActiveSheet.Shapes.AddPicture Filename:=imageName, _
linktofile:=msoFalse, _
savewithdocument:=msoCTrue, _
Width:=100, _
Height:=100
此代码也有效,但插入前图像大小调整为100 * 100像素,因此原始文件分辨率会丢失。
有没有办法插入图像文件,然后缩小它们的大小,以便保留原始分辨率?
非常感谢,Adam。
答案 0 :(得分: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
...并尝试避免.Select
... Dim
您需要的对象并使用它们。