vba搜索文件名的一部分,看文件是否存在?

时间:2014-11-13 14:19:12

标签: excel vba text

我有几个文本文件(.txt)都被称为" Log"接着是这样的日期(11-2014)和随机数,如" 34450"

所以我的文件夹目录(P :)看起来像:

Log (11-2014) 12234.txt
Log (10-2014) 45546.txt
Log (08-2014) 686868.txt
Log (11-2014) 343434.txt

我想要做的是使用vba代码来计算日志文件包含今天日期的相同月份和年份的所有事件。

所以今天是11月,今天是2014年

所以我想计算所有日志文件,其中文件名的日期位为"(11-2014)"匹配当前日期/今天的日期和月份。

这是我尝试过的但它没有工作,我一直在找到"发现"即使文件不存在,请有人告诉我我做错了什么?

 Dim iMonth As Integer
    Dim iYear As Integer

    Dim target As String
    iMonth = Month(Date)
    iYear = Year(Date)

    thefile = "P:\Log *(" & iMonth & "-" & iYear & ")"
    If thefile > 0 Then

    MsgBox "Found"

    Else

    MsgBox "Not"

    End If

2 个答案:

答案 0 :(得分:0)

您可以使用Left或InStr函数来查找子字符串是否是另一个字符串的一部分

dim logName as string, logNameToFind as string 
if Left(logName, Len(logNameTofind)) = LogNameToFind then 
      MsgBox "Found"
end if  

dim logName as string, logNameToFind as string 
if InStr(logName, logNameToFind) = 1 then 
   MsgBox "Found"
End if 

其中 logName 是在磁盘上找到的文件名, logNameToFind 是您要查找的模式。

要从目录中获取所有文件,请使用Dir函数

答案 1 :(得分:0)

您可以使用以下函数使用与您的模式匹配的所有文件填充数组,然后使用
UBound(myArray)来计算。

Private Function GetFileList(FileSpec As String) As Variant
'   Returns an array of filenames that match FileSpec
'   If no matching files are found, it returns False

    Dim FileArray() As Variant
    Dim FileCount As Integer
    Dim FileName As String

    On Error GoTo NoFilesFound

    FileCount = 0
    FileName = Dir(FileSpec)
    If FileName = "" Then GoTo NoFilesFound

    'Loop until no more matching files are found
    Do While FileName <> ""
        FileCount = FileCount + 1
        ReDim Preserve FileArray(1 To FileCount)
        FileArray(FileCount) = FileName
        FileName = Dir()
    Loop
    GetFileList = FileArray
    Exit Function

NoFilesFound:
    GetFileList = False
End Function