Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

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.

1 Reply
danielrozental
Master II
Master II

Creo que sería mucho mas sencillo utilizar variables en las descripciones y cambiarlas por medio de acciones o incluso cambiar las variables por medio de macros si no te alcanza con la funcionalidad de las acciones.