excel2010及之后版本
Pictures.Insert方法,因为在文档中只存储链接信息
以前在Excel2003中用picture.insert方法写的代码,到了Excel2010中只能插入链接,
图片不能随文件一起保存,
解决方法1.
个简单的方法是将图片剪切一下,然后重新粘贴,
这样Excel文件中将在保存时包含图片
code:
lole_sheet.application.selection.cut //剪切粘贴图片让文件保存的时候包含图片
//lole_sheet.application.Pictures.cut //剪切粘贴图片让文件保存的时候包含图片
lole_sheet.Pictures.paste.select//剪切粘贴图片让文件保存的时候包含图片
lole_sheet.application.Selection.left=ldec_x
lole_sheet.application.Selection.top=ldec_y
2.改为shapes.addpicture,
但遇到图片宽高比例的问题。
经过一悉研究,好像找到了完美的方法,请各位指正。
----------------------------------------------
Shapes.AddPicture 最后两个参数用-1,-1表示按图片原始尺寸插入
ActiveSheet.Shapes(ActiveSheet.Shapes.Count)可以引用刚插入的图片,
从而可以读取图片宽和高,以及进行缩放。
如:
ldec_x=..//left
ldec_y=..//top
////原始图片大小插入
lole_sheet.Shapes.AddPicture(ls_filename, True, True,ldec_x,ldec_y,-1,-1) //
//lole_sheet.Shapes(lole_sheet.Shapes.Count)//可以引用刚插入的图片
////原始圖片大小
ldec_oripic_w=lole_sheet.Shapes(lole_sheet.Shapes.Count).Width
ldec_oripic_h=lole_sheet.Shapes(lole_sheet.Shapes.Count).Height
lole_sheet.Shapes(lole_sheet.Shapes.Count).left = ldec_x + 2
lole_sheet.Shapes(lole_sheet.Shapes.Count).top = ldec_y + 2
If ldec_w>0 Then
lole_sheet.Shapes(lole_sheet.Shapes.Count).Width =ldec_w
End If
If ldec_h>0 Then
lole_sheet.Shapes(lole_sheet.Shapes.Count).Height=ldec_h
End If
或选中方式:
ldec_x=..//left
ldec_y=..//top
//原始图片大小插入
lole_sheet.Shapes.AddPicture(ls_filename, True, True,ldec_x,ldec_y,-1,-1).select //選中對象
//原始圖片大小
ldec_oripic_w=lole_sheet.application.Selection.ShapeRange.Width
ldec_oripic_h=lole_sheet.application.Selection.ShapeRange.Height
lole_sheet.application.selection.left = ldec_x + 2
lole_sheet.application.selection.top = ldec_y + 2
If ldec_w>0 Then
lole_sheet.application.Selection.ShapeRange.Width =ldec_w
End If
If ldec_h>0 Then
lole_sheet.application.Selection.ShapeRange.Height=ldec_h
End If
以上方法PB测试通过。