Excel 2016 vba插入并调整图片大小到范围

时间:2018-05-31 19:03:08

标签: image excel-vba vba excel

2周前,我创建了一个代码来插入图片,将它们放置到一个范围内并将它们调整到该范围。 代码完美无缺,我用它生成了100页的报告。

今天我想在另一个项目上再次运行它,图片到处都是。 图片来自同一台相机并具有相同数量的像素。

我已尝试过在此网站上讨论的许多选项,但没有任何效果。 我希望有人能找到这个问题。

代码:

var p1 = new Promise((resolve, reject) => {
  // load google charts here
}); 

var p2 = new Promise((resolve, reject) => {
  // fetch here
}); 

Promise.all([p1, p2]).then(values => { 
  drawsChartsAfterBothComplete();
});

screenshot

1 个答案:

答案 0 :(得分:3)

问题是你的照片旋转90度。访问位置和大小属性时,需要对旋转进行调整,如此

要确定图像是否旋转,请检查.ShapeRange.Rotation属性

With FotoOverview
    .ShapeRange.LockAspectRatio = msoFalse
    If .ShapeRange.Rotation = 90! Or .ShapeRange.Rotation = 270! Then
        .Height = RangeOverview.Width
        .Width = RangeOverview.Height
        .Top = RangeOverview.Top - (.Height - .Width) / 2#
        .Left = RangeOverview.Left + (.Height - .Width) / 2#
    Else
        .Width = RangeOverview.Width
        .Height = RangeOverview.Height
        .Top = RangeOverview.Top
        .Left = RangeOverview.Left
    End If
End With

解释为何起作用

如果您的图片的旋转属性为!= 0,则Top,Left,Height,Width属性值适用于未旋转的图像。

示例,如果图像看起来像这样,其旋转属性= 90(或270)

Rotated Image

然后它的Top,Left,Height,Width属性值实际上基于此

rotated

因此,要将其放置在范围上,您需要在范围位置计算图片大小和位置 ,但需要针对旋转进行调整,如代码所示

Adjusted