美文网首页
VBA插入图片随文件保存(非引用方式)

VBA插入图片随文件保存(非引用方式)

作者: tchivs | 来源:发表于2018-08-14 10:48 被阅读0次

VBA插入图片随文件保存(非引用方式)

1.1. 需求分析

接收到xxx公司项目正在使用的Excel自动生成报告的宏,可以看出,大致就是把测试截图全自动插入到报告文件中。

image.png

1.1.1. 已知问题

生成的报告文件有一个最大的问题就是当目录下的测试截图被删除时,测试报告当中的图片就会显示为空, 这显然不是我们想要的效果。

image.png

查看宏代码得知Pictures.Insert只是引用了路径下的图片,图片不能随文件一起保存,所以要解决这个问题。

        Workbooks("" & Filename & "").Activate
        Sheets("测试截图").Select
        Range("A8:R27").Select

        file = Dir(ThisWorkbook.Path & "\" & zhanMing & "\测试截图\整体覆盖RxLevel.*")
        ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & zhanMing & "\测试截图\" & file & "").Select 'Pictures.Insert方法,因为在文档中只存储图片的链接信息,图片不能随文件一起保存
        Selection.ShapeRange.LockAspectRatio = msoFalse
       ' Selection.ShapeRange.IncrementLeft -10
       ' Selection.ShapeRange.IncrementTop -10
        Selection.ShapeRange.Height = 285
        Selection.ShapeRange.Width = 485

1.2. 解决方案

使用Shapes.AddPicture 方法来保存文件

语法:
Shapes.AddPicture( Filename , LinkToFile , SaveWithDocument , Left , Top , Width , Height )

image.png

示例

This example adds a picture created from the file Music.bmp to myDocument.

Set myDocument = Worksheets(1) 
myDocument.Shapes.AddPicture("c:\microsoft office\clipart\music.bmp", True, True, 100, 100, 70, 70)

1.2.1. 代码的修改

1.新建一个子过程:

Sub InsertPicture(path As String, ran As Range)
'Path为文件路径
'ran为要插入的单元格区域
Set myDocument = ActiveSheet
myDocument.Shapes.AddPicture(path, True, True, ran.Left, ran.Top, ran.Width, ran.Height).Placement = xlMoveAndSize
End Sub

2.把原宏中所有类似的代码都改为以下格式


'原始代码示例
        Range("C14:D14").Select
        file = Dir(ThisWorkbook.Path & "\" & zhanMing & "\现场照片\天线侧面照片_第2小区.*")
        ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & zhanMing & "\现场照片\" & file & "").Select
        Selection.ShapeRange.LockAspectRatio = msoFalse
        Selection.ShapeRange.Height = 170
        Selection.ShapeRange.Width = 285

'修改后示例
        file = Dir(ThisWorkbook.path & "\" & zhanMing & "\现场照片\天线侧面照片_第2小区.*")
        Call InsertPicture(ThisWorkbook.path & "\" & zhanMing & "\现场照片\" & file & "", Range("C14:D14"))

3.测试后生成的文件大小比原来的文件大了好多,里面的图片也真正保存到Excel文件中了。

相关文章

  • VBA插入图片随文件保存(非引用方式)

    VBA插入图片随文件保存(非引用方式) 1.1. 需求分析 接收到xxx公司项目正在使用的Excel自动生成报告的...

  • Hello Markdown

    markdown 练习 插入网络地址 baidu 引用文件 插入代码 hello world 插入图片坂本 表格 ​

  • 【UiPath 问题 04】Invoke VBA 无法执行

    Invoke VBA 的执行原理:临时性地插入 VBA 文件到工作簿,执行完毕之后再将工作簿内的 VBA 文件删除...

  • Kotlin 图片的保存与读取

    图片的保存 图片的读取 方式一 方式二 方式三 文件遍历 遍历某个文件下的所有图片文件

  • latex笔记

    插入算法 首先引入相应的package 插入表格 2. 插入图片 3. 插入引用 效果 使用插入的图片、表格、引用...

  • Markdown笔记

    标题 列表 插入链接 插入图片 引用 粗体和斜体 代码引用

  • vsCode编辑markdown实现上传本地图片到服务器

    曾经我是这样在 markdown 文件中插入图片的,通过截图工具将涂鸦的图片保存到文章同级的 images 文件夹...

  • 图床神器 iPic 首度公开体验

    设想一下,将 Sketch 设计的图片插入博客,需要多少步? 将 Sketch 中的图片保存为临时图片文件 打开浏...

  • 在博客中插入图片

    在写文章时,常常有配图说明的需求,Hexo有多种图片插入方式,可以将图片存放在本地引用或者将图片放在CDN上引用,...

  • md语言的使用

    插入图片 在 Markdown 中,插入图片不需要其他按钮,你只需要使用![] (图片地址) 插入引用 插入链接和...

网友评论

      本文标题:VBA插入图片随文件保存(非引用方式)

      本文链接:https://www.haomeiwen.com/subject/mepmbftx.html