我有这个代码可以获取所有文件类型。然后,如果它在数组中有扩展名,它应该存储在excludedFile
数组中,并在执行后显示。
Dim excludedFile() as String
Const exts = _
".ade.adp.app.asp.bas.bat.cer.chm.cmd.com.cpl.crt.csh.der.exe.fxp.gadget" & _
".hlp.hta.inf.ins.isp.its.js.jse.ksh.lnk.mad.maf.mag.mam.maq.mar.mas.mat"
Dim file As Variant
file = Application.GetOpenFilename("All Files, *.*", , "Select File", , True)
ReDim data(1 To UBound(file) + 1, 1 To 1)
' filter the list
For i = LBound(file) To UBound(file)
ext = LCase(Mid(file(i), InStrRev(file(i), ".")))
If InStr(1, exts, ext & ".") = 0 Then ' if not blacklisted
count = count + 1
data(count, 1) = file(i)
Else 'I've tried this but returns Subscript out of range error
excludedFile(UBound(excludedFile)) = file(i)
ReDim Preserve excludedFile(1 To UBound(excludedFile) + 1) As String
found = true
End If
Next
if found then
MsgBox Join(excludedFile, vbCrLf)
end if
感谢任何帮助。感谢。
答案 0 :(得分:1)
不是最优雅的方式,但工作
Const exts = _
".ade.adp.app.asp.bas.bat.cer.chm.cmd.com.cpl.crt.csh.der.exe.fxp.gadget" & _
".hlp.hta.inf.ins.isp.its.js.jse.ksh.lnk.mad.maf.mag.mam.maq.mar.mas.mat"
Dim file As Variant
file = Application.GetOpenFilename("All Files, *.*", , "Select File", , True)
'Dim your Array and a Counter
Dim excludedFile() As String
Dim efCount As Integer
ReDim Data(1 To UBound(file) + 1, 1 To 1)
efCount = 0
' filter the list
For i = LBound(file) To UBound(file)
ext = LCase(Mid(file(i), InStrRev(file(i), ".")))
If InStr(1, exts, ext & ".") = 0 Then ' if not blacklisted
Count = Count + 1
Data(Count, 1) = file(i)
Else 'I've tried this but returns Subscript out of range error
'Use counter to access array
ReDim Preserve excludedFile(efCount)
excludedFile(efCount) = file(i)
efCount = efCount + 1
found = True
End If
Next
If found Then
MsgBox Join(excludedFile, vbCrLf)
End If