나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내

작성자:  

 김보담 (qheka1645)

추천:  2
파일:     조회:  3043
제목:   vba 다른 파일에서 가져올 시트의 갯수
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007):

* 아래줄에 질문을 작성하세요 >>
 다른 엑셀파일에서 워크시트를 복사해 올건데요
마지막 시트를 숫자로 지정하지 않고 알아서 구해주는 코드를 어떻게 해야하나요?(워크시트를 그대로 다른 엑셀로 복사해 올때 마지막 시트를 구해서 for문을 돌려서 다른 엑셀로 옮기는 것)

두번째줄을 바꾸면 될거같은데 잘 모르겠습니다.

 Set getFile = GetObject(FilePath & FileName)
 Set lastsheet = Worksheets.Count
 For i = 4 To lastsheet
        getFile.Sheets(i).Copy _
            Worksheets("Sheet2")
 Next i
 
[불량 게시물 신고]  
조삿갓lastsheet = getfile.Worksheets.Count
     ' Worksheets.Count의 결과는 Object 형이 아닌 정수형이기 때문에
     ' Set 명령으로 대입하면 오류가 발생합니다.
     ' Set 명령이 아닌 단순 치환식이어야 함
     ' 또한, 아래 For 문과 비교해 볼 때
     ' lastsheet는 현재 파일의 시트 개수가 아닌
     ' 복사해 오려는 getfile의 시트 개수를 구해야 함
03-23 (22:30)
삭제 ■신고
조삿갓For i = 1 To lastsheet
      ' 여기서 i를 4부터 반복한다고 하셨는데
      ' getfile의 모든 시트를 차례로 복사해 오는 것이 아니었나요?
      ' 그렇다면 i는 1부터 시트 개수만큼 반복해야 함
    getfile.Sheets(i).Copy after:=Worksheets(Worksheets.Count)
        ' 시트가 복사되는 현재 파일의 시트 개수는
        ' 반복문이 진행되는 동안 계속 변하게 되므로
        ' 루프 밖에서 미리 계산해 두는 것은 의미가 없음
        ' 이와 같이 그 때 그 때 계산해야 함
        ' 또한, 마지막 시트의 다음에(항상 맨 뒤에)
        ' 복사되도록 하려면 파라메터 앞에
        ' after를 명시적으로 지정해야 함
        ' 생략하면 before로 해석됨
  Next i
03-23 (22:30)
삭제 ■신고
        
  

작성일 : 2018-03-23(12:23)
최종수정일 : 2018-03-23(14:22)