2014-05-11 3 views
4

내 친구와 저는 현재 작은 스프레드 시트로 정기적으로 분할해야하는 마스터 스프레드 시트를 가지고 있습니다. 이것은 수동 프로세스 였지만 자동화하고 싶습니다. Excel VBA에서 자동 스프레드 시트 생성

  1. 새로운 스프레드 시트에 필터 후 현재 표시 스프레드 시트
  2. 저장 스프레드 시트를
  3. 수출 데이터를 해당 필터를 적용하고 돌아갑니다 : 나는 나 다음을 행한 이러한 목표를 달성 도움이 될 VBA에서 세 단계 솔루션을 개발 ~ 1 (다른 기준)

불행히도 구현하기가 힘듭니다. 나는이 줄에서 오류 메시지가 코드를 디버깅시

enter image description here

: 나는 스프레드 시트를 생성 할 때마다, 내 문서가 정지, 시작은 여러 가지 계산을 수행 한 다음이 저에게이 오류 메시지를 제공

enter image description here

하나의 Excel 통합 문서가 열려 있으며 하나의 행만 표시됩니다 (헤더 정보가 포함 된 두 번째 행은 Master에서 가져온 것).

정확히 여기서 무슨 일이 벌어지고 있습니까?

이 내 코드는 지금까지 있습니다 :

모두의 마음

' This bit of code get's all the primary contacts in column F, it does 
' this by identifying all the unique values in column F (from F3 onwards) 
Sub GetPrimaryContacts() 
    Dim Col As New Collection 
    Dim itm 
    Dim i As Long 
    Dim CellVell As Variant 

    'Get last row value 
    LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row 

    'Loop between all column F to get unique values 
    For i = 3 To LastRow 
     CellVal = Sheets("Master").Range("F" & i).Value 
     On Error Resume Next 
     Col.Add CellVal, Chr(34) & CellVal & Chr(34) 
     On Error GoTo 0 
    Next i  

    ' Once we have the unique values, apply the TOKEN NOT ACTIVATED FILTER 
    Call TokenNotActivated 
    For Each itm In Col 
     ActiveSheet.Range("A2:Z2").Select 
     Selection.AutoFilter Field:=6, Criteria1:=itm   
     ' This is where the magic happens... creating the individual workbooks 
     Call TokenNotActivatedProcess 
    Next 
    ActiveSheet.AutoFilter.ShowAllData 
End Sub 

에 대한 처리를 실행하는 "활성화되지 않은 토큰"필터

Sub TokenNotActivated()  
'Col M = Yes 
'Col U = provisioned 
ThisWorkbook.Sheets(2).Activate 
ActiveSheet.Range("A2:Z2").Select 
Selection.AutoFilter Field:=13, Criteria1:="Yes" 
Selection.AutoFilter Field:=21, Criteria1:="provisioned", Operator:=xlFilterValues 
End Sub 

통합 문서 저장

Function TokenNotActivatedProcess() 
    Dim r As Range, n As Long, itm, FirstRow As Long 
    n = Cells(Rows.Count, 1).End(xlUp).Row 
    Set r = Range("A1:A" & n).Cells.SpecialCells(xlCellTypeVisible) 
    FirstRow = ActiveSheet.Range("F2").End(xlDown).Row 
    itm = ActiveSheet.Range("F" & FirstRow).Value 
    If r.Count - 2 > 0 Then Debug.Print itm & " - " & r.Count - 2 
    Selection.SpecialCells(xlCellTypeVisible).Select 
    Selection.Copy 
    Workbooks.Add 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 
    ActiveWorkbook.SaveAs Filename:="C:\Working\Testing\TokenNotActivated - " & itm + ".xls", FileFormat:=52, CreateBackup:=False 
End Function 
+2

오류 메시지의 명령이 명확하지 않습니까? ** 범위 내의 단일 셀을 선택하고 명령을 다시 시도하십시오. ** 'A2 : 22'는 "범위 내의 단일 셀"이 아닙니다. 오류 메시지의 단어는 종종 의미가 있습니다. :-) –

+0

@KenWhite - 해당 범위를 선택하고 싶습니다. 가능하지 않습니까? 현재 두 번째 행만 새로운 통합 문서에 저장되고 나면 오류 메시지가 나타납니다. 더 이상 통합 문서가 저장되지 않습니다. – methuselah

+0

@methuselah : 오류가 표시되면 'itm'값을 추가하고 목록을 필터링하려고합니다. ** TokenNotActivated ** 호출 후 * 중단 점 * (F9)을 사용하여 코드를 중단하고 루프에서 필터가 작동하는 행이 있는지 확인한 다음 F8을 사용하여 한 줄씩 디버깅 해보십시오 . –

답변

2

이 오류는 빈 범위를 필터링하려고 시도한 경우 발생합니다. 귀하의 코드를 분석 한 후, 내 추측은 여기서 워크 시트 활성화가 누락되었습니다. TokenNotActivated 함수를 호출 한 후 ActiveSheet.Range("A2:Z2").Select 라인을 반복하는 것이 의미가 없으며 코드가 일부 빈 범위/워크 시트를 필터링하려고 시도하기 때문입니다.

관련 문제