2014-06-12 6 views
0

특정 xls 파일을 하나의 시트로 병합하려고하지만 런타임 오류 1004 "워크 시트 클래스의 복사 방법이 실패했습니다"라는 메시지가 나타납니다. 100 개가 넘는 파일을 병합 하시겠습니까? 내가 occssionally xl2003와 ActiveWorkbook와 "타이밍"문제로 실행 한통합 문서를 결합하는 Excel 매크로 런타임 오류 1004

Sub GetSheets() 
    Path = "C:\Users\..." 
    Filename = Dir(Path & "*100.00mA.isd.xls") 

Do While Filename <> "" 

    Workbooks.Open Filename:=Path & Filename, ReadOnly:=True 
    For Each Sheet In ActiveWorkbook.Sheets 
    **Sheet.Copy After:=ThisWorkbook.Sheets(1)** 
    Next Sheet 
    Workbooks(Filename).Close 
    Filename = Dir() 

Loop 
End Sub 
+2

일부 시트를 복사 한 다음 결국 실패합니까? 아니면 첫 번째 패스에서 실패할까요? –

+0

Excel 통합 문서의 시트 수는 시스템의 메모리를 기반으로합니다. 실패하기 전에 몇 장을 복사합니까? –

+0

한 장만 복사하면됩니다. – user115862

답변

2

은, 어쩌면이 문제를 일으키는 것입니다. 경우에 따라 Excel에 새로운 통합 문서가 완전히 열리기 전에 VBA 코드가 ActiveWorkbook 행에 표시되기 때문에 결과적으로 ThisWorkbookActiveWorkbook이됩니다. 이 문제를 해결하는 방법은 특히 새 통합 문서에 변수를 할당하는 것입니다.

Sub GetSheets() 
    Dim wB As Workbook '<=New 
    Path = "C:\Users\..." 
    Filename = Dir(Path & "*100.00mA.isd.xls") 

    Do While Filename <> "" 

     Set wB = Workbooks.Open(Filename:=Path & Filename, ReadOnly:=True) '<=New 
     For Each Sheet In wB.Sheets '<=New 
      Sheet.Copy After:=ThisWorkbook.Sheets(1) 
     Next Sheet 
     wB.Close '<=New 
     Filename = Dir() 
    Loop 
End Sub 
+0

또 다른 좋은 이유는'Active ' –

0

이 설명 된 런타임 오류가 나타납니다 다른 상황입니다 : 대상 통합 문서를 Excel 97-2003 파일 (.XLS) 인 경우

은 당신의 원본 통합 문서는 2007 엑셀입니다 (또는 그 이상) 파일 (.xlsx).

이 조합을 사용하면 sheet.copy 메서드에서 동일한 런타임 오류가 발생합니다.

ActiveWorkbook.FileFormat 속성을 읽으면 다른 통합 문서 형식을 확인할 수 있습니다.

관련 문제