2008-09-19 5 views
1

olap 큐브에 피벗 테이블이 있습니다. 나는 페이지 필드에 가서 여러 항목을 수동으로 선택 취소 할 수 있습니다. 제외해야 할 항목 목록을 기반으로 VBA에서이 작업을 수행하려면 어떻게해야합니까? (n.b. 내가 필요로하는 항목의 해당 항목 목록이 없습니다.)olap 피벗에서 페이지 항목을 프로그래밍 방식으로 제외합니다.

예를 들어 기본 쿼리를 변경하여 다른 방법으로 이러한 항목을 제외하는 방법을 알고 있습니다. 필자는 특히 피벗에서 항목을 선택 취소하는 사용자 작업을 복제하려고합니다.

답변

0

나는이 예제가 C#에있는 것에 대해 사과하지만 실제로 번역 할 충분한 VBA를 모르겠다. (누군가이 항목을 편집하여 아래에 추가 할 수있다.)

이런 종류의 것을 추천 해 주시겠습니까? 환경부는 Microsoft.Office.Interop.Excel 네임 스페이스와 [NAME]입니다

((MOE.PivotField)pivotTableObject.PivotFields("[NAME]")).Delete(); 

내가 하나 전적으로 만족스럽지 해결책을 발견하면

+0

죄송합니다 .. 피벗 필드 자체가 아니라 피벗 필드에서 ITEMS을 삭제하려고합니다. – Hobbo

+0

필자는 PivotField가 행/열/값 축의 항목이라고 생각합니다. PivotField에는 항목이 없습니다 (100 % 확신 할 수는 없지만 닫음) – juan

+0

Juan이 기대하는 용어가 다릅니다. 필자는 PivotField에 실제로 PivotItems 컬렉션이 포함되어있는 Excel의 PivotTable 개체 모델에서 내 작품을 그리는 중입니다. – Hobbo

0

제거 할 필드의 이름입니다. 별도의 MDX 쿼리에서 페이지 필드에 해당하는 차원의 모든 멤버를 검색했습니다. 제외 할 항목의 사전도 만들었습니다. 그래서 같은 멤버를 통해 나는 다음 루프 : AddPageItem 각 호출 분석 서버는 그것이 비실용적 느린 만들기 위해 쿼리를 유발하기 때문에

PivotField.CubeField.EnableMultiplePageItems = True 
firstTime = True 
For Each member In dimensionMembers 
    If Not HiddenMembers.Exists(member) Then 
     'firstTime = true is the equivalent of unchecking 
     ' the root node of the items treeview 
     PivotField.CubeField.AddPageItem "[Dimension].[" & member & "]", firstTime 
     firstTime = False 
    End If 
Next 

내가 만족스럽지 말한다. 그리고 그것은 단지 잘못되었다고 느낍니다.

2

차원 구성원을 나열하기 위해 MDX 쿼리를 실행할 필요가 없으며 VBA에서 큐브 개체의 속성을 볼 수 있습니다. 시작하여 어디서 볼 수 있는지 알아보세요! 예를 들면이 관통

세트 OCAT = 뉴 ADOMD.Catalog

루프 : oCat.CubeDefs (SCUBE) .Dimensions (3) .Hierarchies (0) .Levels (2) .Members (I)