1 Reply Latest reply: Aug 30, 2011 12:02 PM by Daniel Rozental RSS

    Cambiar label una vez añadidas las dimensiones

      Buenas tardes,

       

      A continuación os muestro el código que tengo en el editor de módulos (MACRO) en donde genero dimensiones y expresiones de forma dínamica en un chart (tabla dinámica).

      Para las expresiones (marcada la línea en XXX1: ), una vez las creo luego les cambio el label para que sea más legible pero en las dimensiones no lo consiguo utilizando el código marcado en XXX2:.

       

      Dim vDim
      Dim vExp
      '.........................................................
      sub haySeleccion

      set x = ActiveDocument.GetCurrentSelections
      s = x.Selections
      v = x.VarId

      bDim = false
      bExp = false

       

      for i = lbound(s) to ubound(s)
           'msgbox v(i) & " = " & s(i)

           if v(i) = "%NombreDim" then
             bDim = true
             vDim = s(i)
           end if

       

           if v(i) = "%NombreExp" then
              bExp = true
              vExp = s(i)
            end if
      next

       

      if bDim and bExp then
        ConstruirTablaDinamica
      end if
      end sub
      '.........................................................

      sub ConstruirTablaDinamica

      set chart = ActiveDocument.GetSheetObject("CH17")

      set dims = chart.GetProperties.Dimensions
      set exps = chart.GetProperties.Expressions

       

      'Borramos las dimensiones
      for i=0 to dims.Count
        chart.RemoveDimension 0
      next

       

      'Creamos las dimensiones seleccionadas
      set dimValues = ActiveDocument.fields("%Dimension").getPossibleValues
      set dimSelection = ActiveDocument.fields("%NombreDim").GetSelectedValues

      for i=0 to dimValues.Count - 1
           'msgbox(dimSelection.Item(i).text)
        chart.AddDimension dimValues.Item(i).text

       

        set p = chart.GetProperties
        set dims = p.Dimensions
       

        'XXX2: INTENTO RENOMBRAR EL TÍTULO DE LA DIMENSIÓN

        dims(i).Title.v = dimSelection.Item(i).text

        next

       

      'Creamos las expresiones seleccionadas
      for i=0 to exps.Count - 1
        chart.RemoveExpression 0
      next

      set expValues = ActiveDocument.fields("%Expresion").getPossibleValues
      set expSelection = ActiveDocument.fields("%NombreExp").GetSelectedValues

      for i=0 to expValues.Count - 1
           'msgbox(expValues.Item(i).Text)
        chart.AddExpression expValues.Item(i).Text
       

        set p = chart.GetProperties
        set exps = p.Expressions
        set expItem = p.Expressions.Item(i).Item(0).Data.ExpressionVisual.NumberPresentation
        expItem.Dec = ","
        expItem.Fmt = "#.##0,00;-#.##0,00"
        expItem.nDec = 2
        expItem.Thou = "."
        expItem.Type = 11 'fixed decimal
        expItem.UseThou = 1

       

        'XXX1: RENOMBRAMOS EL LABEL DE LA EXPRESIÓN

        set expItem = exps.Item(i).Item(0).Data.ExpressionVisual
        expItem.Label.v = expSelection.Item(i).Text

        chart.SetProperties p
      next
      end sub

       

      He estado buceando y he visto que en teoría se haría así, pero no me funciona.

       

      Me pueden echar una mano?

       

      Gracias de antemano.