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