在数组中添加文件名

时间:2016-08-12 10:04:09

标签: arrays excel vba

我有这个代码可以获取所有文件类型。然后,如果它在数组中有扩展名,它应该存储在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

感谢任何帮助。感谢。

1 个答案:

答案 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