2013-04-16 2 views
0

저는 db에서 데이터를 가져온 다음 해당 데이터의 피벗을 만드는 매크로를 만듭니다. 하지만이 일을하면서 나는 몇 가지 의견과 함께 1004 오류가 발생합니다. 이 명령은 소스 데이터의 두 개 이상의 행을 필요 - : 여기에 오류가 나는이 런타임 오류 '1004'를 가지고 을 말하는 내 코드데이터를 db에서 방금 가져 오면 피벗을 만들 수 없습니다.

 Sub CreatePivot() 
    Dim objTable As PivotTable, objField As PivotField 
    ActiveWorkbook.Sheets("data").Select 
' data is name of the sheet 
    Range("A1").Select 
    **Set objTable = Sheet1.PivotTableWizard** 
    Set objField = objTable.PivotFields("name") 
     objField.Orientation = xlRowField 
     Set objField = objTable.PivotFields("location") 
     objField.Orientation = xlRawField 
     Set objField = objTable.PivotFields("blaa") 
     objField.Orientation = xlRowField 
     ' Specify a data field with its summary 
     ' function and format. 
     Set objField = objTable.PivotFields("money") 
     objField.Orientation = xlDataField 
     objField.Function = xlSum 
     objField.NumberFormat = " #,##0" 

     ' Specify a page field. 
     'Set objField = objTable.PivotFields("GENDER") 
     'objField.Orientation = xlPageField 

     ' Preview the new PivotTable report. 
     ActiveSheet.PrintPreview 

     ' Prompt the user whether to delete the PivotTable. 
     Application.DisplayAlerts = False 
     If MsgBox("Delete the PivotTable?", vbYesNo) = vbYes Then 
      ActiveSheet.Delete 
     End If 
     Application.DisplayAlerts = True 

    End Sub 

입니다. 한 행의 선택에서만 명령을 사용할 수 없습니다. 다음을 시도해보십시오. 고급 필터를 사용하는 경우 데이터 행이 두 개 이상 포함 된 셀 범위를 선택하십시오. 그런 다음 고급 필터 명령을 다시 클릭하십시오. 피벗 테이블 보고서 또는 피벗 차트 보고서를 만드는 경우, 내 코드가 설정 objTable 붙어지고 여기

를 [가 여기 중지]을 입력 = Sheet1.PivotTableWizard

같은 코드가 난을 복용하여 사용하는 경우 신선한 데이터를 누른 다음 작업. 여기 btn_click을 사용하여 db에서 데이터를 가져오고 that.one 매크로 뒤에있는 두 개의 매크로는 데이터를 가져오고 두 번째 매크로는 creat pivot에 있습니다. 그러나 문제는 다가옵니다. 아무도 이것에서 도울 수 있습니까?

+0

감사합니다. Mike. 나는 아래의 접근법을 시도했다. 하지만 피벗 캐시를 사용할 수는 없습니다. 제 코드를 어디서 업데이트 할 수 있습니까? 나는 피벗 캐쉬 (pivotcache)에 대해 읽었지 만 여기에서는 같은 것을 사용하는 방법을 모르겠다. – honey

답변

0

누락을 제외하고는 사용자가 Sheet1 As Worksheet을 선언했다고 생각하지 않습니다. 기본적으로 Variant으로 초기화되어 PivotTableWizard 메서드에 적절한 개체를 제공하지 않습니다.

는 또한, PivotTableWizard (엑셀 2010)의 설명을

이 방법은 OLE DB 데이터 소스를 사용할 수없는 것을 말한다. Add 메서드를 사용하여 피벗 테이블 캐시를 추가 한 다음 캐시를 기반으로 피벗 테이블 보고서를 만듭니다.

관련 문제