在不同版本的Excel中插入图片

标签: VBA Office2010 Excel | 发表时间:2011-07-16 09:01 | 作者:winland David
出处:http://www.vbafan.com

在Excel中插入图片一般使用Picture集合的Insert方法。 但是不同的版本有一些差别。

下面是Excel2003中的代码。其中Insert方法中的文件路径的文件夹分界符可以是”\”也可以是”/”。另外,设置LoctAspecRatio属性为True并不能固定长宽比,需要同时调整长度和宽度。

Sub InsertImg2003()
    Dim imgWidth As Integer
    Dim fixWidth As Integer
    Dim dRatio As Double
 
    ' 设置图片显示固定宽度
    fixWidth = Cells(2, 2).Width * 5
 
    ' 选择图片插入位置
    Cells(2, 2).Select
    With ActiveSheet.Pictures.Insert("C:\test.jpg")
        ' 获取图片插入后的原始宽度
        imgWidth = .ShapeRange.Width
        ' 获取拉伸比,如果固定显示高度的话用Height属性
        dRatio = fixWidth / imgWidth
        ' Excel2003中设置固定长宽比不起作用
        '.ShapeRange.LockAspectRatio = msoTrue
        ' 调整宽度
        .ShapeRange.ScaleWidth dRatio, msoFalse, msoScaleFromTopLeft
        ' 调整高度
        .ShapeRange.ScaleHeight dRatio, msoFalse, msoScaleFromTopLeft
    End With
End Sub

Excel2007中插入图片的代码基本上一样。但是Insert方法中的文件路径的文件夹分界符只能是”\”。另外设置固定长宽比在Excel2007中有效,所以只需要设置宽度即可。还有一个不同的地方是2007中使用代码插入图片后,图片并不定位于当前选择的单元格,需要设置图片的位置。

Sub InsertImg2007()
    Dim imgWidth As Integer
    Dim fixWidth As Integer
    Dim dRatio As Double
 
    ' 设置图片显示固定宽度
    fixWidth = Cells(2, 2).Width * 5
 
    ' 选择图片插入位置
    Cells(2, 2).Select
    With ActiveSheet.Pictures.Insert("C:\test.jpg")
        ' 获取图片插入后的原始宽度
        imgWidth = .ShapeRange.Width
        ' 获取拉伸比,如果固定显示高度的话用Height属性
        dRatio = fixWidth / imgWidth
        ' 设置固定长宽比,默认为True
        .ShapeRange.LockAspectRatio = msoTrue
        ' 调整宽度
        .ShapeRange.ScaleWidth dRatio, msoFalse, msoScaleFromTopLeft
        ' 不需要重复设置高度
        '.ShapeRange.ScaleHeight dRatio, msoFalse, msoScaleFromTopLeft
        ' Excel2007和2003不同,使用代码插入图片的位置并不位于选择的单元格
        .Left = Cells(2, 2).Left
        .Top = Cells(2, 2).Top
    End With
End Sub

2007的代码可以用于2010,但是当保存文件时,你会发现文件的大小并没有什么改变,实际上在Excel2010里使用代码插入图片只是保存了指向图片的链接,图片本身并没有保存下来。当源图片文件被删除或移走,Excel文件将不能显示图片。一个简单的方法是将图片剪切一下,然后重新粘贴,这样Excel文件中将在保存时包含图片。同时,Cut方法的位置放在ScaleWidth前或者后将影响图片的保存质量。

Sub InsertImg2010()
    Dim imgWidth As Integer
    Dim fixWidth As Integer
    Dim dRatio As Double
 
    ' 设置图片显示固定宽度
    fixWidth = Cells(2, 2).Width * 5
 
    ' 选择图片插入位置
    Cells(2, 2).Select
    With ActiveSheet.Pictures.Insert("C:\xiugai.jpg")
        ' 获取图片插入后的原始宽度
        imgWidth = .ShapeRange.Width
        ' 获取拉伸比,如果固定显示高度的话用Height属性
        dRatio = fixWidth / imgWidth
        ' 设置固定长宽比,默认为True
        .ShapeRange.LockAspectRatio = msoTrue
        ' 调整宽度
        .ShapeRange.ScaleWidth dRatio, msoFalse, msoScaleFromTopLeft
        ' 不需要重复设置高度
        '.ShapeRange.ScaleHeight dRatio, msoFalse, msoScaleFromTopLeft
        ' Excel2010和2007不同,插入的图片位于当前选择的单元格,不需要设置位置
        '.Left = Cells(2, 2).Left
        '.Top = Cells(2, 2).Top
        ' 复制图片让文件保存的时候包含图片
        .Cut
        ActiveSheet.Pictures.Paste.Select
    End With
End Sub

相关 [版本 excel 图片] 推荐:

在不同版本的Excel中插入图片

- David - Winland
在Excel中插入图片一般使用Picture集合的Insert方法. 下面是Excel2003中的代码. 其中Insert方法中的文件路径的文件夹分界符可以是”\”也可以是”/”. 另外,设置LoctAspecRatio属性为True并不能固定长宽比,需要同时调整长度和宽度. ' 获取图片插入后的原始宽度.

PHP导出excel

- syeye - scofield PHP开发-SEO SEM
最近做一个项目,其中涉及到了数据导成excel的功能. 后来使用了 开源的 PHPExcel  http://phpexcel.codeplex.com/ 目前最新版是1.7.6. PHPExcel 可以生成 .xls 和 .xlsx (office2007). 比如设置 excel的title,keywords,description.

Excel 数据分析

- - ITeye博客
用Excel做数据分析——直方图. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

Excel高级使用技巧

- demonhunterl - 互联网的那点事
如果直接输入“1/5”,系统会将其变为“1月5日”,解决办法是:先输入“0”,然后输入空格,再输入分数“1/5”. (2) 序列“001”的输入. 如果直接输入“001”,系统会自动判断001为数据1,解决办法是:首先输入“’”(西文单引号),然后输入“001”. 如果要输入“4月5日”,直接输入“4/5”,再敲回车就行了.

学做专业EXCEL图表

- X - 小蚊子乐园
《电脑爱好者》2011年10月版以特别策划的方式大篇幅刊登《谁说菜鸟不会数据分析》节选内容. 《谁说菜鸟不会数据分析》--基于通用的Excel工具,像小说一样通俗易懂的数据分析教程,现在  卓越   京东   当当   China-pub 上可订购. 谁说菜鸟不会数据分析--业内人士联合推荐.

Asp.net操作Excel更轻松

- Bloger - 博客园-首页原创精华区
今天先介绍一个关于导出数据的例子,以Excel为模板.  1.操作Excel的动态链接库(暂时没有下载地址,稍后提供). 2.建立操作动态链接库的共通类,方便调用. 18 ///ExcelHelper 的摘要说明. /// 获取或设置报表模板路径. //TODO: 在此处添加构造函数逻辑. /// 带参ExcelHelper构造函数.

Excel项目管理工具

- - CSDN博客研发管理推荐文章
版权所有,转载请注明出处: http://guangboo.org/2013/10/27/excel-project-management. Excel强大的表格功能在项目管理中同样具有大用处,作者通过在实践中实际运用Excel进行项目管理的经验,简单介绍Excel在项目管理中的应用. 本文主要介绍Excel如何做项目计划和项目进度跟踪,项目计划和项目跟踪是项目周期中最重要的环节,无论是几个月的小项目,还是几年的大项目,计划和进度始终是保证项目正常推进、按时交付的重要手段.

POI Excel导入导出 - milan's

- - 博客园_首页
   基本思路:点击导出后生成临时.xls文件,返回文件名,供用户下载,下载完后删除文件.    带查询的导出(前端EasyUI),如下为导出界面图.   下面为导出按钮绑定的函数:. var exportCondition={};//导出条件.      //按条件进行查询数据,首先我们得到数据的值.

从Excel到微服务

- - 乱象,印迹
Excel很老,Excel很土,Excel一点也不sexy;微服务新,微服务很潮门,微服务很高大上. 那么,Excel和微服务有什么关系. 上个月看了篇文章,The Unbunlding of Excel. 作者认为,对于初创公司(尤其是非“纯IT”初创公司)来说,Excel几乎包办各种工作. 想做轻量级的CRM,可用Excel.

Excel百宝箱8.0终极版

- 龟慢 - 软件志
Excel是微软公司开发的精典办公软件,经过了多次更新,从1.0到如今的14.0(即Excel 2010)等等版本变化,已经非常强大. 它不仅具有绘制表格、图表、图形等功能,还能数据分析、预测,甚至可以实现程序开发. Excel百宝箱系列正是利用Excel所开发的增强型插件. Excel百宝箱8.0是利用VBA(Visual Basic for Applications)语言编写的增强型插件.