ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 589|回复: 3

[求助] 批量插入图片

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-5 14:21 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这是跑团每日跑步打卡的统计表
想请各位老师帮帮忙,用VBA做个程序,实现这个愿望。
1.    电脑文件夹内装有这些照片,同时照片有文件名,也就是网名,照片的格式为jpg和png,文件名有空格、数字、符号、英文、汉字。
2.    批量插入excel表格中,文件名在照片左侧,照片大小3.5X3.cm,单元格随照片大小而变动。
3.    目标单元格由用户输入。

搜狗高速浏览器截图20240305141620.png

求助.zip

746.07 KB, 下载次数: 25

TA的精华主题

TA的得分主题

发表于 2024-3-8 11:22 | 显示全部楼层
Attribute VB_Name = "InsertPic"
Sub 插入图片()
'Excel VBA 插入指定图片到单元格并只适应大小
Dim filenames As String
Dim filefilter1 As String
filefilter1 = ("所有图片文件(*.jpg;*.bmp;*.png;*.gif),*.jpg;*.bmp;*.png;*.gif")    '所有图片文件后面的括号为中文括号
filenames = Application.GetOpenFilename(filefilter1, , "请选择一个图片文件", , MultiSelect:=False)
'没有选中文件时,做容错处理
If filenames = "False" Then
Exit Sub
End If
'插入图片到指定的单元格,Pictures.Insert只插入连接,在其他电脑上无法显示图片;Shapes.AddPicture插入完整图片
Sheet1.Pictures.Insert(filenames).Select
Sheets("签名不合格").Shapes.AddPicture f.Path, 1, 1, ActiveCell.Left + 3, ActiveCell.Top + 3, 0.9 * ActiveCell.Width, 0.9 * ActiveCell.Height
'图片自适应单元格大小
On Error Resume Next
Dim picW As Single, picH As Single
Dim cellW As Single, cellH As Single
Dim rtoW As Single, rtoH As Single
cellW = ActiveCell.Width
cellH = ActiveCell.Height
picW = Selection.ShapeRange.Width
picH = Selection.ShapeRange.Height
rtoW = cellW / picW * 0.95
rtoH = cellH / picH * 0.95
If rtoW < rtoH Then
    Selection.ShapeRange.ScaleWidth rtoW, msoFalse, msoScaleFromTopLeft
Else
    Selection.ShapeRange.ScaleHeight rtoH, msoFalse, msoScaleFromTopLeft
End If
picW = Selection.ShapeRange.Width
picH = Selection.ShapeRange.Height
Selection.ShapeRange.IncrementLeft (cellW - picW) / 2
Selection.ShapeRange.IncrementTop (cellH - picH) / 2
End Sub


TA的精华主题

TA的得分主题

发表于 2024-3-22 20:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
选择匹配的单元格,尺寸自行修改即可。
Public Sub Q()

'开始插入图片

    Application.ScreenUpdating = False

Dim PicName$, pand&, k&, PicPath, i, p, n, PicArr, TitleRow

Dim PicNameCol, PicPath2, PicPath3, TPnameCol, TPCol

    PicCol = Selection.Column

    TPCol = PicCol + 1

    TitleRow = 0 'Val(Application.InputBox("请输入标题行的行数。")) '用户设置总表的标题行数

    If TitleRow < 0 Then MsgBox "标题行必须大于等于零,请重新确认? ": Exit Sub

    With Application.FileDialog(msoFileDialogFolderPicker)

        .AllowMultiSelect = False '禁止多选文件夹

       If .Show Then PicPath = .SelectedItems(1) Else: Exit Sub

    End With

    If Right(PicPath, 1) <> "\" Then PicPath = PicPath & "\"

    PicArr = Array(".jpg", ".jpeg", ".bmp", ".png", ".gif")

    For i = TitleRow + 1 To Cells(Rows.Count, PicCol).End(3).Row

        PicPath2 = PicPath

        PicName = Cells(i, PicCol).Value

        If Len(PicName) <> 0 Then

            PicPath3 = PicPath2 & PicName

            pand = 0

            For p = 0 To UBound(PicArr)

               If Len(Dir(PicPath3 & PicArr(p))) Then ' Check if the image file exists in the specified path
    ' Add the picture to the worksheet
    With ActiveSheet.Shapes.AddPicture(PicPath3 & PicArr(p), msoFalse, msoTrue, 100, 100, -1, -1) 'Pictures.Insert(PicPath3 & PicArr(p))
            .Left = Cells(i, TPCol).Left
            .Top = Cells(i, TPCol).Top
            .Width = Cells(i, TPCol).Width
            .Height = Cells(i, TPCol).Height
        End With
   
    pand = 1 ' Set pand to 1 (assuming pand is a variable)

                    n = n + 1

                End If

            Next

            If pand = 0 Then k = k + 1

            End If

    Next

    Application.ScreenUpdating = True

    If k <> 0 Then

        MsgBox "图片插入完成!共有" & k & "张图片未找到,请重新确认源文件! "

    Else

        MsgBox "所有图片插入完成!"

    End If

End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-25 16:54 | 显示全部楼层
感谢楼上两位老师 多谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 23:38 , Processed in 0.030704 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表