.addPicture需要宽度和高度,但这最终可能会扭曲图像。添加文件图像时有没有办法使用.LockAspectRatio = msoCTrue?
另外,你如何规定一个页面来放置画布或图片?在以某种方式处理图像之前,需要停止宏录制器。
Set sCanvas = ActiveDocument.Shapes _
.AddCanvas(Left:=MillimetersToPoints(20), Top:=MillimetersToPoints(20), _
Width:=300, Height:=200)
Set CanvasShapes = sCanvas.CanvasItems
With CanvasShapes
.AddPicture FileName:="C:\somepath\image.png", _
Left:=0, Top:=0, Width:=150, Height:=100
...
End With
答案 0 :(得分:2)
将画布大小设置为0并锁定其宽高比,然后添加图片。画布将缩放以适应它。加载图像后,然后根据需要缩放画布:
Set sCanvas = ActiveDocument.Shapes.AddCanvas(MillimetersToPoints(20), MillimetersToPoints(20), 0, 0)
sCanvas.LockAspectRatio = True
Set CanvasShapes = sCanvas.CanvasItems
With CanvasShapes
.AddPicture "C:\somepath\image.png"
End With
'Scale the canvas here.
答案 1 :(得分:1)
您可以尝试使用代码here(下面粘贴以供参考)获取尺寸
Sub test()
Dim objShell As Object
Dim objFolder As Object
Dim objFile As Object
Dim fPath As Variant 'MUST be a variant, not a string
Dim fName As String
fPath = "C:\somepath"
fName = "image.png"
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(fPath)
Set objFile = objFolder.ParseName(fName)
MsgBox objFile.ExtendedProperty("Dimensions")
End Sub
这将为您提供可以使用的图片尺寸。
看起来输出为? w x h ?
,因此您需要解析它,但这应该可行。
请注意,如果您想使用变量来定义文件路径,则必须根据here
将其声明为变体答案 2 :(得分:1)
如果检查AddPicture方法的定义,您会发现除FileName外,所有参数都是可选的,因此不需要高度和宽度。
除非您有特定原因要添加画布,否则在添加图片之前也无需添加画布。
Word没有页面概念,因此您无法指定图片应显示在某个页面上。
答案 3 :(得分:0)
管理以找到一种方法将图片放入MS Word中的特定页面(下面的示例中的第2页):
Dim pNum as long
pNum = 2
Selection.GoTo What:=wdGoToPage, Count:= pNum