excel表中有员工信息,我需要将C列的第10884行到最后一行的数据与D盘目录下常用文件文件夹下很多的照片信息进行比对,如果一样,则删除掉D盘常用文件夹下的文件,下面阐述我的思路,首先遍历遍历D盘目录下常用文件夹下所有照片的文件名信息到ar数组里面,然后遍历excel的C列10884行到最后一行的所有数据到xls_ar数组里面,然后利用字典,将xls_ar数组里面的数据添加进去,通过exists方法和ar里面的进行比对,如果一样,则进行删除操作,代码如下:
Sub delete()
Dim xlsfile, ar(), n%
Dim xls_ar()
xlsfile = Dir("D:\常用文件\" & "*.jpg")
Do Until Len(xlsfile) = 0
n = n + 1
ReDim Preserve ar(1 To n)
ar(n) = xlsfile
xlsfile = Dir
Loop
xls_ar = Range("C10884:C" & [C65535].End(3).Row)
Dim c
Set dic = CreateObject("scripting.dictionary")
For Each c In xls_ar
dic(c) = ""
Next
For i = 1 To UBound(ar) - LBound(ar) + 1
If dic.exists(ar(i)) Then
Dim filename As String
filename = Dir("D:\常用文件\" & ar(i) & ".jpg")
Kill "D:\常用文件\" & filename
filename = Dir
End If
Next
End Sub我的困惑在于filename = Dir("D:\常用文件\" & ar(i) & ".jpg")因为程序会无法识别ar(i)他只会去查找变量名ar(i),而不是里面的值,很奇怪
我也不知道是不是这种需要引用还是怎么的?还请各位大神给我一些指点与帮助,我今天才开始学的VBA
Sub delete()
Dim xlsfile, ar(), n%
Dim xls_ar()
xlsfile = Dir("D:\常用文件\" & "*.jpg")
Do Until Len(xlsfile) = 0
n = n + 1
ReDim Preserve ar(1 To n)
ar(n) = xlsfile
xlsfile = Dir
Loop
xls_ar = Range("C10884:C" & [C65535].End(3).Row)
Dim c
Set dic = CreateObject("scripting.dictionary")
For Each c In xls_ar
dic(c) = ""
Next
For i = 1 To UBound(ar) - LBound(ar) + 1
If dic.exists(ar(i)) Then
Dim filename As String
filename = Dir("D:\常用文件\" & ar(i) & ".jpg")
Kill "D:\常用文件\" & filename
filename = Dir
End If
Next
End Sub我的困惑在于filename = Dir("D:\常用文件\" & ar(i) & ".jpg")因为程序会无法识别ar(i)他只会去查找变量名ar(i),而不是里面的值,很奇怪
我也不知道是不是这种需要引用还是怎么的?还请各位大神给我一些指点与帮助,我今天才开始学的VBA
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货