2009-08-08 2 views
3

복사 작업으로 만들어진 워크 시트의 핸들을 가져 오려고합니다. 다음 코드는 작동에 사용되었습니다.워크 시트에서 복사 한 마지막 워크 시트에서 핸들 가져 오기

Dim wsTempl As Worksheet, pageCount as Long 
Set wsTempl = Sheets("Template") 
For pageCount = 1 To 5 
    wsTempl.Copy After:=Sheets(Sheets.Count) 
    Set ws = Sheets(Sheets.Count) 
    ws.Name = "p" & pageCount 
Next 

하지만 VeryHidden 워크 시트를 통합 문서에 추가 할 때 중지됩니다. 이제 내 Sheets (Sheets.Count)가 내가 마지막에 추가 한 시트 대신 VeryHidden 시트를 얻습니다. 물론

나는

Set ws = Sheets(wsTempl.Name & " (2)") 
ws.Name = "p" & pageCount 

를 사용할 수 있습니다하지만이 정말 유일한 방법이기 때문에 추한 것 같다? 누군가 다른 생각을 할 수 있습니까? ,

  1. 를 열고 새 통합 문서의 첫 번째 시트 '템플릿'다른 시트를
  2. ALT-F11을 삭제 & 이름 - 코드 모듈 &을 삽입 위의 코드
  3. 붙여 넣기를 :

    문제를 복제하기 F5가 작동한다는 것을 보여 주어야합니다.
  4. 은 워크 시트 탭, 목록 첫 번째 코드는

이유가 될 것으로 보인다 실패

  • F5 다시 VBA IDE에서 VeryHidden에 수집의 끝에
  • 세트를 드래그하여 워크 시트를 삽입 Copy After : VeryHidden Sheets 이후 복사하지 않음, 따라서 시트의 이름을 바꾸는 코드 부분은 항상 VeryHidden Sheet의 이름을 바꿉니다.

  • +0

    두 번째 코드를 삭제하려면 템플릿의 이름을 '템플릿 (3)'으로 지정하고 코드를 업데이트하면됩니다. 이제 복사가 '템플릿 (4)'을 만들고 코드가 손상됩니다. 좋습니다. 우리는 x> 1이라는 템플릿을 'Template (x)'라고 명명해야한다는 규칙을 유지할 수 있습니다. –

    +0

    : "우리는 템플릿 'Template (x)의 이름을 지정하지 않는 명명 규칙을 사용할 수 있습니다.' with x> 1 " –

    +0

    중간에 여분의 시트를 삭제해야합니다. 그렇지 않으면 시트가 이미 존재하므로 실패합니다. –

    답변

    4

    워크 시트의 Copy 메서드를 사용하면 새로 생성 된 시트가 활성화되어 있어야합니다. 이 작업을 수행.

    
    Dim wsTempl As Worksheet, i as int 
    Set wsTempl = Sheets("Template") 
    For i = 1 To 5 
        wsTempl.Copy After:=Sheets(Sheets.Count) 
        Set ws = ThisWorkbook.ActiveSheet 
        ws.Name = "p" & pageCount 
    Next 
    
    
    +0

    물론, 그것은 내 앞에서 바로 : Excel VBA에서 복사/붙여 넣기를 통해 추가되는 워크 시트를 캡처하는 방법 -이 또한 지적했습니다. 나는 그런 식으로 생각하지 않았다. 당신이 제안하는 것은 제가 가장 좋은 방법이라고 생각하는 것입니다. 이것에 대해 고마워. –