Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Excel VBA:用于检查文件名的VBA正则表达式?_Regex_Vba_Excel - Fatal编程技术网

Regex Excel VBA:用于检查文件名的VBA正则表达式?

Regex Excel VBA:用于检查文件名的VBA正则表达式?,regex,vba,excel,Regex,Vba,Excel,所以基本上我写了所有这些VBA宏来处理大量数据。在此之前,用户应该能够输入日期并检索他们想要处理的数据。需要处理的数据是每天生成的Excel报告 文件名的格式为:“年\月\日\随机生成的数字)\报告工作表.xls” 我可以用什么方法确定文件名?我已经完成了将输入的日期记录下来并格式化的简单部分。这些数字似乎只有六位数,但我有一种感觉,它可能会改变。我在想,也许有某种方法可以窥视我正在寻找的xls文件的目录,并使用正则表达式来匹配我已经格式化的日期,以确定我需要哪个xls文件。有没有一种可能的方法

所以基本上我写了所有这些VBA宏来处理大量数据。在此之前,用户应该能够输入日期并检索他们想要处理的数据。需要处理的数据是每天生成的Excel报告

文件名的格式为:“年\月\日\随机生成的数字)\报告工作表.xls”

我可以用什么方法确定文件名?我已经完成了将输入的日期记录下来并格式化的简单部分。这些数字似乎只有六位数,但我有一种感觉,它可能会改变。我在想,也许有某种方法可以窥视我正在寻找的xls文件的目录,并使用正则表达式来匹配我已经格式化的日期,以确定我需要哪个xls文件。有没有一种可能的方法可以做到这一点?还是另一种解决方案

仅供参考,以下是我目前掌握的代码:

Dim CurrentDateString As String
Dim MonthString As String
Dim DayString As String
Dim YearString As String
Dim FileNameString As String
Dim i As Integer




CurrentDateString = Worksheets("Sheet1").Range("B2:B2").Value

'Checks to see if the date is in the proper format
If Len(CurrentDateString) = 10 Then


i = InStr(1, CurrentDateString, "/")

MonthString = Mid(CurrentDateString, 1, (i - 1))

i = InStr(4, CurrentDateString, "/")

DayString = Mid(CurrentDateString, 4, (i - 4))
i = InStr(4, CurrentDateString, "/")

YearString = Mid(CurrentDateString, 7, i)

FileNameString = YearString & "_" & MonthString & "_" & DayString & "_" &         "ThisIsWhereTheNumberWouldGo" & "ReportWorkSheet.xls"

 Else
    MsgBox "Current date must have two digits for month and year. Even if its a single digit. For      example January 1st 2014 would be 01/01/2014 NOT 1/1/2014"

  End If

很抱歉给你添了点麻烦,但我还是弄明白了。不需要正则表达式。我想我不清楚。基本上,我需要根据输入的日期查找文件名。文件名中间的数字把我甩掉了,但我甚至不需要在我的解决方案中考虑这个因素。我找到了一种遍历目录的方法,然后我遍历了每个文件,并将文件名的一部分与日期分开,如果有匹配的话。我用excel打开了它。很抱歉浪费了任何人的时间:(


你到底想做什么?不太清楚。我认为这不是你需要正则表达式的原因。你只是想确定一个特定的文件名是否已经存在吗?
 FileNameString = YearString & "_" & MonthString & "_" & DayString
Set MyObject = CreateObject("Scripting.FileSystemObject")
 Set mySource = MyObject.GetFolder("J:\credit\Christopher Smith\Allegro 8.0 Reports\Post Live")

 For Each myFile In mySource.Files
      DirectoryFileNameString = myFile.Name
   DirectoryFileNameStringTemp = Mid(DirectoryFileNameString, 1, 10)
   If FileNameString = DirectoryFileNameStringTemp Then
         MsgBox "IT WORKS Filename String: " & FileNameString & " = DirectoryFilename: " & 
      Workbooks.Open (myFile.Path)
        'Call another sub to massage data here
 DirectoryFileNameStringTemp
End If
Next