问与答87: 如何根据列表内容在文件夹中查找图片并复制到另一个文件夹中?
时间:2022-07-25
本文章向大家介绍问与答87: 如何根据列表内容在文件夹中查找图片并复制到另一个文件夹中?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Q:如何实现根据列表内容查找文件夹中的照片,并将照片剪切或复制到另外的文件夹?如下图1所示,在列C中有一系列身份证号。
图1
在一个文件夹中(示例中为“照片库”),存放着以身份证号命名的照片,在其中查找上图1所示的工作表列C中的身份证号对应的照片并将其移动至另一文件夹中(示例中为“一班照片”),如下图2所示。
图2
如果文件夹中找不到照片,则在图1的工作表列D中标识“无”,否则标识有,结果如下图3所示,表明在文件夹“照片库”中只找到并复制了2张照片,其他照片没有找到。
图3
A:可以使用一段VBA代码实现。代码如下:
Sub CopyPic()
'声明变量
Dim strSourcePath As String
Dim strDesPath As String
Dim strFile As String
Dim iCount As Long
Dim strFilename() As String
Dim lngLastRow As Long
Dim i As Long
Dim bln As Boolean
'指定照片所在文件夹和要复制到的文件夹
'示例假设工作簿与文件夹在同一目录下
strSourcePath = ThisWorkbook.Path & "照片库"
strDesPath= ThisWorkbook.Path & "一班照片"
'获取文件
strFile =Dir(strSourcePath)
'获取工作表最后一行
lngLastRow= Worksheets("Sheet1").Range("C" &Rows.Count).End(xlUp).Row
'重定义动态数组
ReDim strFilename(0 To iCount)
If strFile<> "" Then
strFilename(iCount) = strFile
Else
Exit Sub
End If
'遍历照片所在文件并将所有照片名称存储在数组中
Do While strFile <> ""
iCount= iCount + 1
ReDim Preserve strFilename(0 To iCount)
strFile= Dir
strFilename(iCount) = strFile
Loop
'遍历工作表
For i = 2 To lngLastRow
bln = False
'遍历数组
For iCount = LBound(strFilename) To UBound(strFilename)
'查找照片名称
If Worksheets("Sheet1").Range("C" & i).Value =Left(strFilename(iCount), 18) Then
'如果找到将其复制到目标文件夹
FileCopy strSourcePath & strFilename(iCount), strDesPath &strFilename(iCount)
bln = True
End If
Next iCount
'根据照片是否找到填写列D相应单元格值
If bln Then
Worksheets("Sheet1").Range("D" & i).Value ="有"
Else
Worksheets("Sheet1").Range("D" & i).Value ="无"
End If
Next i
End Sub
代码先将照片所在的文件夹中的所有照片名称存储在数组中,然后遍历工作表单元格,并将单元格中的值与数组中的值相比较,如果相同,则表明找到了照片,将其复制到指定的文件夹,并根据是否找到照片在相应的单元格中输入“有”“无”以提示查找的情况。
可以根据实际情况,修改代码中照片所在文件夹的路径和指定要复制的文件夹的路径,也可以将路径直接放置在工作表单元格中,并使用代码调用,这样更灵活。
- 深入理解C#3.x的新特性(4):Automatically Implemented Property
- 增加网卡注意点
- 深入理解C# 3.x的新特性(1): Anonymous Type
- Linux基础(day65)
- 18.12 keepalived + LVS
- 学会JS只是知道了“是什么”,并不意味着你会用JS做什么
- Linux基础(day68)
- 启动zabbix 报错
- 深入理解C# 3.x的新特性(2):Extension Method[上篇]
- 深入理解C# 3.x的新特性(2):Extension Method[下篇]
- 19.13/19.14 配置邮件告警
- 19.12 添加自定义监控项目
- [原创]深入理解C# 3.x的新特性(3):从Delegate、Anonymous Method到Lambda Expression
- a=b=c,但a不等于c?这是什么鬼
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Qt Designer设置背景图片、颜色不影响其它组件小技巧,控件层级设置,组件的继承,styleSheet设置样式。
- 搭建高可用的Harbor
- PyQt5 技术篇-控件长宽度、高度设置,组件大小设置,组件尺寸查看。
- python基本数据类型
- Python 技术篇-PyQt5动画功能演示,组件移动、尺寸改变动画演示
- 搭建k8s高可用集群 - 二进制方式
- DeepWalk:图网络与NLP的巧妙融合
- 基于kubeadm搭建k8s高可用集群
- 扑克牌例题与Collections工具类
- 快速了解Kubernetes
- PyQt5 技巧篇-按钮竖排显示方法,Qt Designer设置按钮竖排显示。
- Kafka集群监控、安全机制与最佳实践
- PyQt5 技术篇-设置输入框的placeholder方法,Qt Designer设置Line Edit、Text Edit编辑框的placeholder
- Kafka集群搭建及必知必会
- Python 技术篇-打开指定文件夹、目录、路径方法,运行指定文件演示