2015-07-10 46 views
0

我在一個環境中工作始終遵循這個層次結構中的文件:Excel中 - 知道5個第一個數字,找到路徑的路徑使用VBA和正則表達式

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

是:

  • 職位編號總是2位數字後跟3個連續數字,例如:15255(2015年第255次職位)
  • 職位類別用於將工作分爲數百個職位,例如abo已經工作#將在文件夾中找到15200
  • CLIENTNAME是問題,其中顯然可以是任何名稱...

因此,在這一刻,我必須輸入正確的整個工作號碼和姓名和槽excel我提取工作類別等......但爲了自動化一些其他的宏。腳本找到(或搜索/匹配)前5位數字,如果匹配,是否有任何方式將該名稱用作路徑?

例如,如果我知道工作#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提取其數量的類別。

任何幫助,甚至澄清,如果有可能,將有助於

+0

請說明:1)什麼是確切的輸入字符串,2)什麼是確切的輸出?有一個[看這裏](https://regex101.com/r/tU8pE0/1),請fork或更新顯示你有什麼和你需要什麼。 –

+0

看到這個問題http://stackoverflow.com/questions/10380312/loop-through-files-in-a-folder-using-vba的方式來循環通過文件。快速查看第二個(未被接受的)答案。你*可以*使用正則表達式,但這種方法更加簡單快捷。 – OpiesDad

回答

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 
+0

感謝您的幫助,您的腳本可以找到名稱字符串,但嘗試保存時會返回錯誤1004。我使用: 路徑= DIR( 「C:\測試\」 &JobCat& 「\」 &jobnumber可以和 「*」,vbDirectory) 測試在我自己的電腦,但是當我運行宏,看起來像後,找到名稱,它指向我的用戶\ Documents目錄。正是: C:\用戶\聖地亞哥\文檔\ 15116-Smith先生\ FF83F380 正如你可以看到它正確地找到jobnumber可以+客戶名稱「史密斯15116-先生」,而是試圖挽救我的文檔..還有,不要不知道它從哪裏得到「FF83F380」? – Diego

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 
+0

對不起,我不介意函數只返回文件夾名稱,但不是整個路徑。 – Dorian

相關問題