Macro para extrair dados de um gráfico no Excel

Resumo

No Microsoft Excel, pode obter dados de um gráfico mesmo quando os dados estão numa folha de cálculo ou livro externo. Isto é útil em situações em que o gráfico foi criado ou ligado a outro ficheiro que está indisponível ou que foi danificado de alguma forma. Quando os dados de origem para um gráfico são perdidos, os dados ainda podem ser obtidos a partir do próprio gráfico, utilizando uma macro do Microsoft Visual Basic for Applications.

Mais Informações

A Microsoft fornece exemplos de programação apenas a título informativo, sem qualquer garantia expressa ou implícita, incluindo, sem limitações, as garantias implícitas de comercialização e/ou adequação a um fim específico. Este artigo pressupõe que o utilizador está familiarizado com a linguagem de programação demonstrada e as ferramentas utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às suas necessidades específicas.

A seguinte macro de exemplo coloca os dados de origem do gráfico numa folha de cálculo denominada "ChartData" no livro ativo, começando na primeira coluna e primeira linha.

  1. Introduza o seguinte código de macro numa folha de módulo:

    Sub GetChartValues()
       Dim NumberOfRows As Integer
       Dim X As Object
       Counter = 2
    
       ' Calculate the number of rows of data.
       NumberOfRows = UBound(ActiveChart.SeriesCollection(1).Values)
    
       Worksheets("ChartData").Cells(1, 1) = "X Values"
    
       ' Write x-axis values to worksheet.
       With Worksheets("ChartData")
          .Range(.Cells(2, 1), _
          .Cells(NumberOfRows + 1, 1)) = _
          Application.Transpose(ActiveChart.SeriesCollection(1).XValues)
       End With
    
       ' Loop through all series in the chart and write their values to
       ' the worksheet.
       For Each X In ActiveChart.SeriesCollection
          Worksheets("ChartData").Cells(1, Counter) = X.Name
    
          With Worksheets("ChartData")
             .Range(.Cells(2, Counter), _
             .Cells(NumberOfRows + 1, Counter)) = _
             Application.Transpose(X.Values)
          End With
    
          Counter = Counter + 1
       Next
    
    End Sub
    
  2. Insira uma nova folha de cálculo no livro e mude o nome para "ChartData" (sem as aspas).

  3. Selecione o gráfico a partir do qual pretende extrair os valores de dados subjacentes.

    Nota

    O gráfico pode ser incorporado numa folha de cálculo ou numa folha de gráfico separada.

  4. Execute a macro GetChartValues.

    Os dados do gráfico são colocados na folha de cálculo "ChartData".

Para que o gráfico seja interativo com os dados recuperados, tem de ligar o gráfico à nova folha de dados em vez de manter as ligações para o livro em falta ou danificado.

  1. Selecione o gráfico e clique numa série para localizar o nome da folha à qual o gráfico está ligado no livro danificado ou em falta. O nome da folha aparece na fórmula da série na barra de fórmulas.

    Nota

    O nome da folha pode seguir o nome do livro, que está entre parênteses retos, como "[Livro1]", e preceder o ponto de exclamação "!" (ou apóstrofo e ponto de exclamação "'!") que indica o início de uma referência de célula. O nome da folha inclui apenas os carateres entre o símbolo de parêntese reto fechado "]" e o ponto de exclamação (ou apóstrofo e ponto de exclamação). Deixe de fora qualquer apóstrofo se for imediatamente antes do ponto de exclamação, porque um apóstrofo não pode ser o último caráter num nome de folha.

  2. Faça duplo clique no separador da nova folha denominada ChartData.

  3. Escreva o nome da folha original do passo 1 sobre o "ChartData" realçado e prima ENTER. Este nome tem de ser o mesmo que o nome da folha do livro danificado ou em falta.

  4. Se não guardou este ficheiro com o gráfico e a folha de dados, guarde o ficheiro.

  5. No Excel 2003 ou Excel 2002, clique em Ligações no menu Editar e, em seguida, clique em Alterar Origem.

    No Excel 2007, clique no separador Dados , clique em Editar Ligações no grupo Connenctions e, em seguida, clique em Alterar Origem.

  6. Na caixa Ficheiro de Origem, selecione a ligação a alterar e, em seguida, clique em Alterar Origem.

  7. Na caixa de diálogo Alterar Ligações, selecione o novo ficheiro com os dados recuperados e o gráfico e, em seguida, clique em OK.

  8. Se receber a seguinte mensagem de erro

    A sua fórmula contém uma referência externa inválida a uma folha de cálculo.

    É provável que o nome da folha que escreveu no passo 3 não seja o mesmo que o original. Voltar para o passo 1.

  9. A caixa Ficheiro de Origem pode agora estar em branco. Isto indica que todas as ligações apontam para o ficheiro ativo em vez do ficheiro em falta ou danificado. Clique em Fechar.

Agora, o gráfico referencia e interage com os dados recuperados na folha cujo nome foi mudado no livro ativo.