Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Word VBA:插入一张没有已知文件纵横比的图片_Vba_Ms Word - Fatal编程技术网

Word VBA:插入一张没有已知文件纵横比的图片

Word VBA:插入一张没有已知文件纵横比的图片,vba,ms-word,Vba,Ms Word,.addPicture需要宽度和高度,但这可能会导致图像失真。添加文件映像时,是否有任何方法可以使用.LockAspectRatio=msoCTrue 另外,你如何规定一个页面来放置画布或图片?宏记录器需要先停止,然后才能以某种方式处理图像 Set sCanvas = ActiveDocument.Shapes _ .AddCanvas(Left:=MillimetersToPoints(20), Top:=MillimetersToPoints(20), _ Width:=300, Hei

.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

您可以尝试使用代码获取尺寸(粘贴在下面以供参考)

这将为您提供图片的尺寸,然后您可以使用

看起来输出是
?w x h?
所以您需要对其进行解析,但这应该是可行的


请注意,如果要使用变量定义文件路径,则必须将其声明为变量,根据将画布大小设置为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.

如果检查AddPicture方法的定义,您会发现除了FileName之外,所有参数都是可选的,因此不需要高度和宽度

除非您有添加画布的特定原因,否则在添加图片之前也没有必要添加画布


Word没有页面概念,因此您无法指定图片应显示在特定页面上。

设法在MS Word中将图片放置到特定页面(以下示例中的第2页):

Dim pNum as long
pNum = 2
Selection.GoTo What:=wdGoToPage, Count:= pNum

谢谢@Comintern。因此,我只需要shaperage.scalewidth和scaleheight来更改画布大小?我尝试在set objFile行中设置一个字符串变量,如“=objFolder.ParseNase(fName),但出现了一个对象变量未设置错误。未找到克服该错误的方法。我是否可以只在其中包含一个实际字符串而不包含一个字符串变量?请参阅编辑。问题实际上是在设置文件夹时出现在上面的行中。
fPath
必须声明为变量,请参见Thank you som@opiesdad.Thank@m4o_tim,yes,discovered其他参数的可选性质。我不确定canvas,因为Word不允许在涉及形状和图像时重新编码宏。
Dim pNum as long
pNum = 2
Selection.GoTo What:=wdGoToPage, Count:= pNum