在数组中添加一个文件名

我有这个代码获取所有文件types。 那么如果它在数组中有扩展名,它应该被存储在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 

任何帮助表示赞赏。 谢谢。

不是最优雅的方式,但工作

 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