Pergunta

Eu tenho vários gráficos de articulação cada um com sua própria tabela dinâmica em planilhas separadas em Excel 2002.

Quando tento gerar esses gráficos com VBA com o seguinte código:

Set cht = Charts.Add(After:=Worksheets("Setup"))
With cht
    ' we use named ranges here
    .SetSourceData Source:=range(tblName)
    .Name = chtName

....

onde tblname é um intervalo nomeado acabou de criar algumas linhas antes, o código é executado muito bem se há apenas uma mesa e gráfico de gerar, mas me dá um erro de tempo de execução 1004: "Os dados de origem de um relatório de gráfico dinâmico não pode ser alterado. .." se eu tentar gerar a tabela de pivô e um conjunto de gráfico um após o outro.

Indo para Inserir -> Nome -.> Definir, a lista de intervalos nomeados criados parece ser correta

O que é a maneira correta de definir a fonte de dados para um gráfico dinâmico com uma gama dinâmica?

Foi útil?

Solução 2

Este pedaço de código assume que você tem apenas uma tabela dinâmica por folha ea tabela pivot começa na célula A1:

Sheets(wsName).Select
Range("A1").Select
Set cht = Charts.Add(after:=Worksheets(Worksheets.Count))
With cht
    .SetSourceData Sheets(wsName).Range("A1")
    .Name = chtName

...

Também mudando "Worksheets.Count" a um nome de planilha específica parece provocar esse erro também.

Outras dicas

Eu acho que você pode estar tentando fazer muitas coisas ao mesmo tempo.

Se a fonte de dados vai mudar, eu não iria usar um gráfico dinâmico.

Use uma tabela dinâmica, criar o gráfico em tempo de execução (como o seu exemplo). Construir seu gráfico dos resultados da tabela dinâmica.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top