ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA 文件夹和子文件处理

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-30 15:41 | 显示全部楼层 |阅读模式
VBA 证件原始图片文件夹内有许多子文件夹,子文件名称是身份证号码,里面有正面和反面照片,2张或2张以上的
image.png image.png


现在需要合并子文件夹内的图片合成一张正面在上,反面在下图片,合成的图片名称为该子文件夹的名称,
image.png

全部合成后,把原始的图片删除掉,最后把原始文件夹 全部移动到 证件合成图片上传文件内

image.png



image.png 附件.zip (1.41 MB, 下载次数: 6)

TA的精华主题

TA的得分主题

发表于 2023-3-30 18:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Excel内设置2个单元格 插入图片 截图保存

TA的精华主题

TA的得分主题

发表于 2023-3-30 19:24 | 显示全部楼层
写的不好,但意思是一样的,用shell脚本新建文件夹,用imagemagick垂直连接两张图片,报错是因为有个文件夹里没有正面反面

  1. ls | xargs -i ash -c 'cd {};mkdir -p ../../证件合成 图片上传/{};convert -append 正面.jpg 反面.jpg ../../证件合成图片上传/{}/{}.jpg;cd ..;'
复制代码


动画.gif

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-31 08:05 | 显示全部楼层
wanghan519 发表于 2023-3-30 19:24
写的不好,但意思是一样的,用shell脚本新建文件夹,用imagemagick垂直连接两张图片,报错是因为有个文件夹 ...

很强大, shell脚本,大佬没考虑 子文件内正面和反面的图片的格式 有png,jpg等格式
原始图片的子文件夹内的图片很乱的,但有代表性

TA的精华主题

TA的得分主题

发表于 2023-3-31 14:49 | 显示全部楼层
Dim fh
Sub Sheet1_按钮1_Click()
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set d = CreateObject("scripting.dictionary")
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    fh = ThisWorkbook.Path & "\证件合成图片\"
    Sheets("程序").Select
    Call Getfd(ThisWorkbook.Path & "\证件原始图片\", fso, d)
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
Sub Getfd(ByVal pth, fso, d)
    Set ff = fso.getfolder(pth)
    d.RemoveAll
    Call del_pic
    For Each f In ff.Files
        If InStr(f.Name, "正面") Then
            d("正面") = f
        Else
            If InStr(f.Name, "反面") Then
                d("反面") = f
            End If
        End If
    Next f
    If d.Count = 2 Then
        Call insert_pic(d("正面"), [b2])
        Call insert_pic(d("反面"), [b3])
        [d3].Select
        y = fh & ff.Name & "\"
        MkDir y
        Call create_pic(y & ff.Name & ".jpg")
    End If
    For Each fd In ff.subfolders
        Call Getfd(fd, fso, d)
    Next fd
End Sub
Sub del_pic()
    For Each shp In ActiveSheet.Shapes
        shp.Delete
    Next shp
End Sub
Sub insert_pic(f, rng)
    ActiveSheet.Pictures.Insert(f).Select
    With Selection
        .ShapeRange.LockAspectRatio = msoFalse
        .Left = rng.Left
        .Top = rng.Top
        .Width = rng.Width
        .Height = rng.Height
    End With
End Sub
Sub create_pic(fnm)
    [b2:b3].CopyPicture 1, 2
    ActiveSheet.Pictures.Paste.Select
    With Selection
        .Copy
        With ActiveSheet.ChartObjects.Add(0, 0, Selection.Width, Selection.Height).Chart
            .Parent.Select
            .Paste
            .Export fnm
            .Parent.Delete
        End With
        .Delete
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2023-3-31 14:50 | 显示全部楼层
B2,B3单元格大小可以根据需求重新设置
此方法是导入图片,再截图导出。 有的时候可能输出空白图片

附件 (5).zip

1.56 MB, 下载次数: 13

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 00:17 , Processed in 0.031942 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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