有100张以身份证号命名的照片,在excel表中A列有120个身份证号码,如何在B列照片对应的身份证号后显示“有”

我想知道哪些人交了照片,哪些人没交。谢谢!跪求!

Sub zp()
'本代码由 【百度知道】--常山大宝 编写。
'本代码经测试通过。如需转载,请注明出处,谢谢!
'把本代码复制到VBA对应的Sheet内,运行即可。
'假设A列从第2行到第121行为身份证号码
'照片存放路径为 D:\身份证照片\
'在B列从第2行到第121行对应的单元格内显示身份证号码是否有对应的照片
'发生错误后读取下一行
On Error Resume Next
'循环行
For i = 1 To 120
'定义文件变量集
Dim stmp$
'给出文件存放路径
stmp = Dir("D:\身份证照片\", vbDirectory)
'开始遍历文件
'读取文件不为空
Do While stmp <> vbNullString
'提取含后缀的文件名
stmp = Dir()
'如果文件不是子文件夹
If stmp <> ".." Then
'不含后缀的文件名
fName = Left(stmp, InStrRev(stmp, ".") - 1)
'如果表中的身份证号码等于文件名
If Range("A" & i + 1) = Val(fName) Then
'在B列对应的单元格内显示有照片
Range("B" & i + 1) = "有"
'退出读取文件
Exit Do
End If
End If
'下一个文件
Loop
'下一个i值
Next
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-05
你这个问题可以用VBA解决,
1.把这个excel文件和这100个照片文件放在同一个目录中,照片扩展名为JPG(如果照片的扩展名不是JPG,修改代码第三行中扩展名部分为相应的扩展名).
2.在这个工作表的名称上点鼠标右键,选查看代码粘贴以下代码到弹出的VBA编辑窗口,然后关闭VBA编辑窗口返回,在该工作表窗口按ALT+F8 选中名称为check的宏,点执行

Sub check()
Dim Rng As Range, SFZName As String
SFZName = Dir(ThisWorkbook.Path & "\*.jpg")
If SFZName <> "" Then
Top = SFZName
Do
Set Rng = Range("A1:A200").Find(Left(SFZName, Len(SFZName) - 4), lookat:=xlWhole)
If Not Rng Is Nothing Then Rng.Offset(0, 1) = "有"
SFZName = Dir
Loop While Top <> SFZName And SFZName <> ""
End If
End Sub本回答被网友采纳
第2个回答  2012-08-04
关于excel vba判断文件是否存在,一般有如下的两种方式。
  请根据情况,选择一种适合你的方法。
  一、通过FileExists判断文件是否存在
  Dim MyFile As Object
  Set MyFile = CreateObject("Scripting.FileSystemObject")
  If MyFile.FileExists("E:\dzwebs\Pic\logo.gif" ) = True Then
   MsgBox "文件存在"
  Else
  MsgBox "文件不存在"
  End If
  以上代码在VBA环境下使用。或者将其制作成为宏也可以。"E:\dzwebs\Pic\logo.gif"为文件路径及文件名称,可自行修改。
  二、通过Dir来判断
  Dim YouFile As String
  YouFile = Dir("E:\MyPictures\Pic\logo.gif")
  If x <> "" Then
   MsgBox "文件存在"
Else
   MsgBox "文件不存在"
  Endif
  "E:\MyPictures\Pic\logo.gif"为文件路径及文件名称,可自行修改。当然,如上代码,也在VBA下使用,可自作成为宏或函数都可以。追问

可以把实际操作的步骤简单说一下么?太深奥了有点晕。。。

那个宏如何制作?

追答

Dim MyFile As Object
  Set MyFile = CreateObject("Scripting.FileSystemObject")
for i=1 to A列最后一行
  If MyFile.FileExists("E:\dzwebs\Pic\"A"&i.gif" ) = True Then
   B列值=已经交相片
  Else
  B列值=尚未交相片
  End If
next

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网