excel 导入图片 不能取得类picture 的insert属性

Sub 按钮4_Click()
Dim iRow As Single, shp As Shape, Target As Range
With ActiveSheet
For iRow = 5 To .Cells(65536, 1).End(xlUp).Row
'取得A列最后一个非空单元格行号
.Pictures.Insert(ThisWorkbook.Path & "\pic\" & .Cells(iRow, 2) & ".jpg").Select
Set Target = .Cells(iRow, 4)
With Selection
.Top = Target.Top + 1
.Left = Target.Left + 1
.Width = Target.Width - 1
.Height = Target.Height - 1
End With
Next
End With
End Sub
代码是书上照抄的,但运行起来,说不能取得类picture 的insert属性。
是什么原因呢?帮我看看哪里出错。

按我的猜测,你的“抄”的代码是属于“以前的代码”,这种只适合于Office 97到2003。

而你用的,一定是Office 2007或更高版本的。
这些版本的图片插入代码跟之前的版本不同,完全是“不兼容”的。
如果我没有猜错,我可以给你提供在2007版本下,插入图片的代码。追问

是的,我用的是2010版。但不知道是不是这个原因。
如可以,请提供一下2010版的代码。根据第二列的名称插入图片。路径如上。

追答

我无法确切的给你“2010”的代码,我这儿只有2007的,没有更高版本的Office 。

但估计在07版的代码,在10中也可以用。你可以试下是否一样:

你新建一个空白的工作簿,然后在VBA的立即窗口中执行下面的这句代码:

call sheet1.Shapes.AddPicture("x:\temp\01.jpg",msoFalse,msoCTrue,cells(3,2).left,cells(3,2).top, cells(3,2).width, cells(3,2).height )

看能不能正确执行,在B3单元格插入了一张图片。

当然那儿实际的图片路径,要按你自己的写一个。

如果正确执行,你也可以按这代码所示,把自己现在的代码修改了。


看你贴的代码,好象是从第5行开始,A列有数据,就把B列中的“图片路径”所指的图片,

插入到同行D列的位置?

如果解决问题了,请采纳吧。

追问

根据你的代码我改成这样了,但没反应,是怎么改呢?

追答

有什么错误提示没啊?

还有一个就是,你可以先在 For 语句那儿设置一个断点,看代码是否被执行到了。
如果执行到了,被中断在那儿,你也要按F8跟踪几个循环,看它是否正常执行了循环流程。
按理说,如果执行了,又没提示错误,那么图片就插入到了你的“Sheet5”的工作表中了。
只是位置,是按当前的活动工作表单元格来定的,因为你后面的位置、大小参数,没有指定
工作表。

温馨提示:答案为网友推荐,仅供参考