2014-11-14 2 views
2

폴더의 모든 동일한 파일에서 "응용 프로그램"이라는 워크 시트를 마스터 통합 문서로 복사하고 복사 한 파일의 이름으로 복사 한 워크 시트의 이름을 바꾸려고합니다. 지금까지 내 코드는 모든 것을 복사하고 복사 한 워크 시트의 이름을 원래 파일 이름으로 바꿀 수는 없습니다. 복사 한 통합 문서에 특정 워크 시트 병합

는 '응용 프로그램'시트를 복사하기 전에 IF 조건이 닫는

Sub GetSheets() 
    Application.ScreenUpdating = False 
    Path = "C:\Users\Desktop\Work docs\" 
    Filename = Dir(Path & "*.xls") 
    Do While Filename <> "" 
     Workbooks.Open Filename:=Path & Filename, ReadOnly:=True 
     For Each Sheet In ActiveWorkbook.Sheets 
      If Sheet.Name = "application" Then 
      End If 
      Sheets.Copy After:=ThisWorkbook.Sheets(1) 
     Next Sheet 
     Workbooks(Filename).Close SaveChanges:=False 
     Filename = Dir() 
    Loop 
    Application.ScreenUpdating = True 
End Sub 
+0

들여 쓰기가 어땠습니까? 제대로 수행하면 오류가 분명해질 것입니다. –

+0

감사 마크. VBA에 대한 전문가가 아니며 리버스 엔지니어링 코드로 인해 경험이 제한적입니다. – Werra2006

답변

0

, 그래서 Sheets.Copy 그냥 통합 문서의 모든 시트를 복사합니다 주셔서 감사합니다. (아마도 인해 일부 시스템 구성 - 이유를 확인해야합니다)

Do While Filename <> "" 
    Workbooks.Open Filename:=Path1 & Filename, ReadOnly:=True 
    For Each Sheet In Workbooks(Filename).Sheets 
     If Sheet.Name = "application" Then 
      Sheet.Copy After:=ThisWorkbook.Sheets(1) 
      ThisWorkbook.Sheets("application").Name = Filename & "-application" 'Changes the sheetname from "application" of test1.xls workbook to "test1.xls-application" 
     End If 
    Next Sheet 
    Workbooks(Filename).Close SaveChanges:=False 
    Filename = Dir() 
Loop 

내가 변수로 경로을 사용할 수없는, 그래서 내가 대신 에 Path1을 사용했다 : 당신은 아래의 코드를 시도 할 수 있습니다. Workbooks(Filename).Sheets 대신 ActiveWorkbook.Sheets을 사용할 수도 있습니다. 그러나 그 이름으로 통합 문서를 참조하는 것이 더 좋습니다.

+0

환상적인이 치료를하고 시간을 절약. 고맙습니다. – Werra2006

+0

좋습니다. 내 대답을 Accepted로 표시 할 수 있습니다. ;) – rusk

관련 문제