2016-07-08 60 views
0

我目前正在從VBA腳本加載4個colums從兩個不同文件的內容。我希望腳本能夠在名稱上使用正則表達式來查找文件。我知道在我的兩個文件的標題中,我必須有「XM7」或「XM8」。所以我希望從這些文件中加載列。這裏是我的代碼:正則表達式加載來自不同文件的數據

Sub charge_fiche() 
Application.DisplayAlerts = False 
Application.ScreenUpdating = False 
Dim titre As String 
Dim wbk1 As Workbook 
Dim wbk2 As Workbook 
Dim wbk3 As Workbook 
Dim Chemin As String 
Chemin = ThisWorkbook.Path 
titre2 = "run2_tps_nuit_xm7_01062016" 
titre3 = "run2_tps_nuit_xm8_01062016" 
Set wbk1 = ThisWorkbook 
Set wbk2 = Workbooks.Open(Chemin & "\" & titre2) ' jouvre le classeur (titre) 
Set wbk3 = Workbooks.Open(Chemin & "\" & titre3) ' jouvre le classeur (titre) 
wbk1.Sheets(1).Range("A1:A1000").Value = wbk2.Sheets(1).Range("B1:B1000").Value 
wbk1.Sheets(1).Range("B1:B1000").Value = wbk2.Sheets(1).Range("H1:H1000").Value 
wbk1.Sheets(1).Range("C1:C1000").Value = wbk2.Sheets(1).Range("L1:L1000").Value 
wbk1.Sheets(1).Range("D1:D1000").Value = wbk2.Sheets(1).Range("M1:M1000").Value 
wbk1.Sheets(1).Range("E1:E1000").Value = wbk3.Sheets(1).Range("B1:B1000").Value 
wbk1.Sheets(1).Range("F1:F1000").Value = wbk3.Sheets(1).Range("H1:H1000").Value 
wbk1.Sheets(1).Range("G1:G1000").Value = wbk3.Sheets(1).Range("L1:L1000").Value 
wbk1.Sheets(1).Range("H1:H1000").Value = wbk3.Sheets(1).Range("M1:M1000").Value 
wbk2.Close 
wbk3.Close 

它現在的工作,但我希望的東西來代替行 「titre2」 和 「titre3」 像

titre2 = "\wxm7\w.xls" 

titre3 = [0-9a-zA-Z_]*" & xm8 & " [0-9a-zA-Z_]* & ".xls" 

但也其中的作品。你有什麼主意嗎 ?

回答

0

確定,所以這部作品與導演,但你必須specifie文件路徑2次:

Dim wbk3 As Workbook 'fichier XM8 
Dim Chemin As String 
Chemin = ThisWorkbook.Path 'on trouve le chemin du fichier actuel 
titre3 = "*xm8*.xls" 'nom du fichier XM8 
filename3 = Dir(Chemin & "\" & titre3) 
Set wbk3 = Workbooks.Open(Chemin & "\" & filename3) ' jouvre le classeur XM8 
0

您可以使用Dir獲得的文件名與通配符

titre2 = "*xm7*.xls" 
filename = Dir(Chemin & "\" & titre2) 

如果沒有匹配的文件,Dir將返回""。如果您再次調用Dir而沒有參數,它將返回下一個匹配的文件名。據我所知它不支持正則表達式。

編輯:你應該檢查是否Dir發現的東西,然後打開該文件

If filename <> "" Then 
    Workbooks.Open(Chemin & "\" & filename) 
Else 
    'some error handling here 
Else If 

您必須再次指定路徑,因爲Dir只返回文件名,而不是整個路徑。

+0

確定,它可能工作,但我仍然無法打開該文件,然後我得到一個errore 1004,因爲它找不到文件,但errore消息中文件的名稱是文件的真實名稱。我應該在Dir之後仍然使用workbooks.open嗎?像這樣'Set wbk3 = Workbooks.Open(Dir(Chemin&「\」&titre3))' –

+0

@NicoBalas'Dir'只返回文件名,而不是整個路徑。我會編輯它 – arcadeprecinct