2017-12-19 32 views
1

나는 VBA에 익숙하지 않고 다음 문제를 해결하기 위해 열심히 노력하고 있습니다. 나는 보통 10 ~ 20 장의 파일로 Excel 파일을 얻습니다. 그런 다음 동일한 시트 구조를 가진 다른 책으로 한 장의 모든 시트의 동일한 셀 범위 (i76 : i133)를 복사합니다.한 책에서 여러 장의 동일한 셀 범위를 다른 책에 복사/붙여 넣기

나는 이것을 쉽게 코드화하기 위해 루프를 만들려고 노력하고 있지만 실패하고있다.

Sub copy() 

Dim Sourcebook As Workbook 
Dim Destinationbook As Workbook, mysheet As Worksheet 

Set Sourcebook = Workbooks("Quarterly.xlsx") 
Set Destinationbook = Workbooks("Master.xlsx") 

For Each mysheet In Sourcebook.Worksheets 
    Sourcebook.Sheets(mysheet).Range("I76:I133").Copy 
    Destinationbook.Sheets(mysheet).Range("I76").Paste 
Next 

End Sub 

나는 매우 환영받을 Sourcebook.Sheets(mysheet).Range("I76:I133").Copy

어떤 도움에

런타임 오류 13, 형식이 일치하지

를 얻을!

+0

두 통합 문서가 이미 열려 있습니까? 그렇지 않으면 문제가 발생할 것입니다. – Vityata

답변

3

귀하의 mySheet 변수는 String으로 사용하려고 할 때 Worksheet type입니다. 루프가 개선되었습니다.

For Each mysheet In Sourcebook.Worksheets 

    'Sourcebook.Sheets(mysheet).Range("I76:I133").Copy 'instead of this... 
    mysheet.Range("I76:I133").Copy '...use this 

    Destinationbook.Sheets(mysheet.Name).Range("I76").Paste 

Next 
+2

'Destinationbook.Sheets (mysheet)'? 'Destinationbook.Sheets (mysheet.Name)'을 의미하지 않습니까? 당신은 괄호 (또는 인덱스) 안에'String'을 가질 필요가 있습니다 –

+0

@ShaiRado, 고마워요, 그 말이 맞아요, 그걸 놓쳤습니다. –

+0

@ShaiRado하지만 이것은 여전히 ​​깨끗합니다. mysheet.name이 그것도 못 박았지만. – L42