2016-07-08 3 views
0

현재 두 개의 다른 파일에서 4 개의 열의 내용을로드하는 VBA 스크립트를 작성 중입니다. 스크립트가 이름에 정규 표현식을 사용하여 파일을 찾을 수있게하고 싶습니다. 내 두 파일의 제목에서 "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 = "\wxm7\w.xls" 

또는

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

하지만 둘 다 같은 것을하여 라인 "titre2"와 "titre3"를 대체 할 그들의 작품. 너는 어떤 생각을 가지고 있니? 일치하는 파일이없는 경우

답변

0

확인 그래서 이것은 디렉터리와 함께 작동하지만, 당신이 파일 경로 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

당신은 와일드 카드

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

와 파일 이름을 얻을 수 Dir를 사용할 수 Dir""를 반환합니다. 인수없이 Dir을 다시 호출하면 일치하는 다음 파일 이름을 반환합니다. 내가 아는 한 정규 표현식을 지원하지 않는다.

편집 : 당신이 Dir 뭔가를 발견 있는지 확인하고 파일 당신은 Dir은 파일 이름이 아닌 전체 경로를 반환하기 때문에 다시 경로를 지정해야

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

를 열어야합니다.

+0

확인, 그것은 작동 할 수 있습니다,하지만 난 여전히 그 파일을 열 수 없습니다 해요 : 내가 errore를 얻을 수 1004, 파일을 찾을 수 없기 때문에 오류 메시지의 파일 이름이 문서의 실제 이름입니다. Dir 후에도 workbooks.open을 사용해야합니까? 이런 식으로'Set wbk3 = Workbooks.Open (Dir (Chemin & "\"& titre3)) ' –

+0

@NicoBalas'Dir'는 전체 경로가 아닌 파일 이름 만 반환합니다. 에서 편집하겠습니다. – arcadeprecinct

관련 문제