当前位置: 首页 > article >正文

Excel:vba实现批量插入图片批注


实现的效果:

实现的代码如下:

Sub InsertImageNamesAndPictures()
    Dim PicPath As String
    Dim PicName As String
    Dim PicFullPath As String
    Dim RowNum As Integer
    Dim Name As String
    Dim Comment As Comment
    Dim folder As FileDialog '定义文件选择对话框
    
    ' 清空单元格中的内容和图片,防止有脏数据
    Cells.Clear
    For Each Pic In ActiveSheet.Pictures
        Pic.Delete
    Next Pic
    
    '忽略出现的错误,继续执行后面的代码,假如这个图片不存在或者有所损坏,会继续执行下个图片的插入
    On Error Resume Next

    ' 设置你的图片文件夹路径(两种获取文件路径的方法)
    'PicPath = "C:\Users\HUAWEI\Pictures\Screenshots\"
    
    '上面的是直接写出文件路径,下面的是动态的选择选择路径
    'set folder创建并设置一个文件夹选择对话框
    Set folder = Application.FileDialog(msoFileDialogFolderPicker)
    '这里等于-1是用户选择并点击“确定”了文件夹,如果用户点击取消没有选择文件夹,就会返回0
    If folder.Show = -1 Then
        'folder.SelectedItems(1)返回了文件夹的路径,只不过最后没有\。PicPath是图片路径,最后加上\
        PicPath = folder.SelectedItems(1) & "\"
    Else
        MsgBox "未选择文件夹,程序结束"
        Exit Sub
    End If
    

    ' 初始化行号
    RowNum = 1

    ' 获取文件夹中的第一个文件名
    PicName = Dir(PicPath & "*.*")

    ' 遍历所有图片文件
    Do While PicName <> ""
        ' 去掉文件扩展名
        Name = Left(PicName, InStrRev(PicName, ".") - 1)
        ' 将文件名插入到 A 列
        Cells(RowNum, 1).value = Name

        ' 拼接完整路径
        PicFullPath = PicPath & PicName

        ' 在 A 列单元格添加批注
        Set Comment = Cells(RowNum, 1).AddComment
        Comment.Text Text:=" "  ' 必须有一些文本

        ' 插入图片到批注中
        With Comment.Shape
            .Fill.UserPicture PicFullPath  ' 设置图片作为批注的背景
            .Width = 50  ' 设置图片宽度
            .Height = 50 ' 设置图片高度
        End With

        ' 设置行高(可以根据需要调整)
        Rows(RowNum).RowHeight = 50

        ' 移动到下一行
        RowNum = RowNum + 1

        ' 获取下一个文件名
        PicName = Dir
    Loop
End Sub

实现删除批注:




 


http://www.kler.cn/a/378598.html

相关文章:

  • Vue3版本的uniapp项目运行至鸿蒙系统
  • 数字信号处理Python示例(5)使用实指数函数仿真PN结二极管的正向特性
  • Linux/Unix awk命令
  • 2024年大厂AI大模型面试题精选与答案解析
  • 【逆向基础】十八、PE文件格式(三)
  • 【Python】【数据可视化】【商务智能方法与应用】课程 作业一 飞桨AI Studio
  • AI助力医疗:未来的医生会是机器人吗?
  • 使用opencv调用TV_L1算法提取光流
  • MySQL表的增删改查(CRUD1)
  • rk3568 适配 CAN
  • 浏览器、性能优化、前端安全重难点面试题
  • LeetCode 0685.冗余连接 II:并查集(和I有何不同分析)——详细题解(附图)
  • ReactNative Fabric渲染器和组件(5)
  • 【NLP自然语言处理】深入解析Encoder与Decoder模块:结构、作用与深度学习应用
  • 简单题:Base32 编码和解码问题| 豆包MarsCode AI刷题
  • 【多线程奇妙屋】收藏多年的线程安全问题大全笔记(下篇) { 死锁问题 },笔记一生一起走,那些日子不再有
  • STM32 第22章 常用存储器介绍
  • JavaScript 判断数据类型有哪些方法?
  • 1、DevEco Studio 鸿蒙仓颉应用创建
  • Gradient descent algorithm
  • express搭建ts(TypeScript)运行环境
  • ChatGPT、Python和OpenCV支持下的空天地遥感数据识别与计算
  • 关联容器笔记
  • 【天线&空中农业】草莓果实检测系统源码&数据集全套:改进yolo11-HSFPN
  • 【华为HCIP实战课程31(完整版)】中间到中间系统协议IS-IS路由汇总详解,网络工程师
  • 使用ssh-key免密登录服务器或免密连接git代码仓库网站