PowerPoint VBA 导入图像,然后以恒定纵横比调整大小

PowerPoint VBA import image, then resize with constant aspect ratio

我正在尝试按照标题中的说明进行操作。我的子包括这个:

Set oPic = oSld.Shapes.AddPicture(FileName:=strPath & strTemp, _
                                  LinkToFile:=msoFalse, _
                                  SaveWithDocument:=msoTrue, _
                                  Left:=35, _
                                  Top:=260, _
                                  Width:=-1, _
                                  Height:=245)

oPic.LockAspectRatio = msoCTrue
oPic.Height = 255

但由于某种原因,纵横比实际上并没有锁定——图像高度被减小到 255 点,但宽度保持不变。知道我错了什么吗?

使用

oPic.LockAspectRatio = msoTrue

不是,msoCTrue

我可以使用您的代码重现您的问题,并且我可以通过在加载图片时不指定高度来使图片正常运行:

Set oPic = oSld.Shapes.AddPicture(FileName:=strPath & strTemp, _
                                  LinkToFile:=msoFalse, _
                                  SaveWithDocument:=msoTrue, _
                                  Left:=35, _
                                  Top:=260, _
                                  Width:=-1, _
                                  Height:=-1)

oPic.LockAspectRatio = msoTrue
oPic.Height = 255

看起来纵横比来自图片数据 -- 而不是来自您当前的图片缩放比例。如果这仍然不能达到您的需要,我可以看到 2 条路径:

  1. 更新您的图片文件以满足您真正需要的宽高比,然后使用上面的方法。

  2. 通过计算 height/width 并设置它们而不是使用 .lockaspectratio,以编程方式设置所需的纵横比。