【问题标题】:VBA Pictures don't show in Excel 2007VBA 图片不显示在 Excel 2007 中
【发布时间】:2013-07-12 12:56:52
【问题描述】:

我遇到了一个在 Excel 2007 下出现的奇怪问题。

我创建了一个包含 1000 行(不同产品/文章编号)的文档,并使用我的小 VBA 代码从网上获取产品图片

ActiveSheet.Pictures.Insert(ActiveCell.Text).Select
Selection.ShapeRange.Height = 100

图片确实显示在 Excel 2010 中,即使在其他 PC 上也是如此 但是,它们不会出现在 Excel 2007 中,即使是其他格式,例如 97-03

【问题讨论】:

标签: excel vba excel-2007 ms-office excel-2010


【解决方案1】:

尝试将图片添加到 Excel 工作表的替代方法。如下:

ActiveSheet.Shapes.AddPicture _
        Filename:=Activecell.Text, _
        linktofile:=msoFalse, _
        savewithdocument:=msoCTrue, _
        Left:=40, Top:=40, Width:=1600, Height:=1600

我几次发现添加图片的方法更稳定可靠。

编辑 正如下面@Julien Marrec 所指出的,使用我提供的代码,您需要知道形状的比例,或者您需要在下一步进行调整。我通常用这段代码来做:

With ActiveSheet.Shapes(ActiveSheet.Count)
    .LockAspectRatio = msoTrue
    .ScaleHeight 1, msoTrue, msoScaleFromTopLeft
    .Width = 200
End With

重要提示!如果您添加大图片,则添加时需要将其放大(代码第一部分为 1600 像素)。如果不是,您将无法在代码的第二部分中获得.ScaleHeight method 的结果。

【讨论】:

  • 这样做的问题是您需要指定所有维度,而您可能不知道它们
  • 您需要为宽度和高度指定一个临时值,然后调用 ScaleWidth 和 ScaleHeight 将其重置为原始大小。查看替代答案
  • @JulienMarrec,是的,完全正确。但是您提供了建议的解决方法......我也会在一分钟内将其添加到我的答案中。
  • 这是我问题的完美解决方案!谢谢你一千次。
  • 此外,我将 Left:=40, Top:=40 替换为 Left:=ActiveCell.Left, Top:=ActiveCell.Top 因为手动放置 1000 行并不容易。只是为了获得正确的文档;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 2010-11-13
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
相关资源
最近更新 更多