Excel - 知道5个第一个数字,找到使用VBA和Regex路径文件的路径

时间:2015-07-10 14:58:21

标签: regex excel vba excel-vba

我在一个始终遵循这种层次结构的环境中工作:

F:\Client Documents\"JobCategory"\"JobNumber-ClientName"\Estimate

存在:

  • JobNumber 总是2位数年后跟3个连续数字,例如:15255(2015年第255个职位)
  • JobCategory 用于将作业分成数百个,例如,上述作业#将在文件夹15200中找到
  • ClientName是问题,其中显然可以是任何名称......

所以目前,我必须正确输入整个工作号和名称,并通过excel我提取工作类别等等......但是为了自动化其他一些宏。脚本是否有任何方式找到(或搜索/匹配)前5位数字,如果匹配,请使用该名称作为路径?

EG。如果我知道工作#15255,F:\ Client Documents \ 15200 \ 15255-JohnSmith或 \ 15255-JohnSnow将是一场比赛?

如果相关...我到目前为止保存工作簿的VBA脚本是:

Dim JobCat As String, JobDetails As String
 JobCat = Sheet12.Range("P4").Text
  JobNumber = Sheet12.Range("P5").Text

ActiveWorkbook.SaveAs Filename:= _
    "F:\Client Documents\" & JobCat & "\" & JobDetails & "\Estimate.xlsm" _
    , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub

P5中的哪个位置我输入了一个洞JobNumber-ClientName,P4提取了它的数字类别。

任何帮助,甚至澄清是否有可能会有所帮助

2 个答案:

答案 0 :(得分:0)

您可以使用Dir函数获取与搜索字符串匹配的第一个文件夹(如果您在第一次执行后运行不带参数的Dir,您将获得与搜索字符串匹配的下一个文件夹)

这应该适合你:

Public Sub saveMe()
Dim JobCat As String, JobDetails As String
Dim Path As String

JobCat = Sheet12.Range("P4").Text
JobNumber = Sheet12.Range("P5").Text

Path = Dir("F:\Client Documents\" & JobCat & "\" & JobDetails & "*", vbDirectory)

If Path <> "" Then
    ActiveWorkbook.SaveAs Filename:= _
        Path & "\Estimate.xlsm" _
        , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If
End Sub

答案 1 :(得分:0)

感谢@Dorian,不得不修改它的路径,所以我的最终脚本是:

Public Sub saveMe()
Dim JobCat As String, JobNumber As String
Dim Path As String

JobCat = Sheet1.Range("A5").Text
JobNumber = Sheet1.Range("A4").Text

Path = Dir("C:\test\" & JobCat & "\" & JobNumber & "*", vbDirectory)

If Path <> "" Then
 ActiveWorkbook.SaveAs Filename:= _
    "C:\test\" & JobCat & "\" & Path & "\Estimate.xlsm" _
    , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If
End Sub