Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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
VBA图片不';不显示在Excel 2007中_Excel_Vba_Excel 2007_Ms Office_Excel 2010 - Fatal编程技术网

VBA图片不';不显示在Excel 2007中

VBA图片不';不显示在Excel 2007中,excel,vba,excel-2007,ms-office,excel-2010,Excel,Vba,Excel 2007,Ms Office,Excel 2010,我在Excel2007中遇到了一个奇怪的问题 我已经创建了一个1000行的文档(不同的产品/文章编号),并使用我的小VBA代码从网上获取产品图片 ActiveSheet.Pictures.Insert(ActiveCell.Text).Select Selection.ShapeRange.Height = 100 图片确实会显示在Excel 2010中,甚至在其他PC上 但是,它们不会出现在Excel 2007中,即使是在97-03等其他格式中,也可以尝试将图片添加到Excel工作表的其他方

我在Excel2007中遇到了一个奇怪的问题

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

ActiveSheet.Pictures.Insert(ActiveCell.Text).Select
Selection.ShapeRange.Height = 100
图片确实会显示在Excel 2010中,甚至在其他PC上
但是,它们不会出现在Excel 2007中,即使是在97-03等其他格式中,也可以尝试将图片添加到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方法的结果。

这只是2007 SP1中的一个问题。阅读:问题是,当您可能不知道尺寸时,您需要指定所有尺寸。您需要为尺寸、宽度和高度指定一个临时值,然后调用ScaleWidth和ScaleHeight将其重置为原始尺寸。见备选方案answer@JulienMarrec是的,没错。但是你提供了建议的解决方法。。。我也会在一分钟内把它加到我的答案中。这是解决我问题的完美办法!非常感谢。此外,我将Left:=40,Top:=40替换为Left:=ActiveCell.Left,Top:=ActiveCell.Top,因为手动放置1000行并不是那么容易。只是为了获得正确的文档;)