O Excel não possui nenhum suporte acessível ao usuário para essa funcionalidade, mas você pode contornar isso facilmente ou entrar no VBA, onde essa funcionalidade é fornecida:
Exportação "one-shot"
- Selecione o gráfico (o gráfico inteiro, não um componente interno; portanto, selecione a borda).
- Copie (ctrl-c, clique com o botão direito do mouse na cópia que quiser).
- Abra o MS Paint.
- Colar (você pode querer minimizar o tamanho da imagem primeiro, ela será ampliada para caber, mas não será reduzida).
- Salvar como desejado.
Exportação em massa
Você provavelmente desejaria usar ActiveChart.Export
em uma macro VBA, isso permite especificar um caminho de arquivo e, em seguida, permite que o Excel execute o trabalho.
Abaixo está um protótipo funcional que acabei de montar. Executar este e todos os gráficos na pasta de trabalho ativa serão exportados para a mesma pasta que o arquivo, no formato PNG, com _chart##
anexado ao nome do arquivo (onde ##
é um número crescente) .
Ele não executa nenhuma verificação de segurança (assim, sobrescreverá arquivos!) e não contém nenhuma verificação de erro. Ele não funcionará se você ainda não salvou a pasta de trabalho, a localização é somente leitura ou qualquer outra coisa que impeça a gravação na localização do arquivo. Eu só testei isso no Excel 2003 (já que é tudo o que tenho para entregar no momento).
Em outras palavras: Use por sua conta e risco , isso é apenas um exemplo básico de trabalho .
'small nicety to ensure two-digits for better file sorting'
Function NiceFileNumber(num As Integer) As String
If num < 10 Then
NiceFileNumber = "0" & num
Else
NiceFileNumber = num
End If
End Function
'the real function'
Sub ExportAllCharts()
Dim i As Integer, exportCount As Integer
Dim fileNum As String, fileBase As String
Dim sheetObj As Worksheet
Dim chartObj As Chart
'current file location and name, with extension stripped'
fileBase = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, ".") - 1)
exportCount = 0
'First, export all charts that are in their own sheets'
For Each chartObj In ActiveWorkbook.Charts
fileNum = NiceFileNumber(exportCount)
exportCount = exportCount + 1
'Do the export'
chartObj.Export fileBase & "_chart" & fileNum & ".png"
Next
'Then, export all charts that are embedded inside normal sheets'
For Each sheetObj In ActiveWorkbook.Worksheets
For i = 1 To sheetObj.ChartObjects.count
fileNum = NiceFileNumber(exportCount)
exportCount = exportCount + 1
'Do the export'
sheetObj.ChartObjects(i).Activate
ActiveChart.Export fileBase & "_chart" & fileNum & ".png"
Next i
Next
End Sub
Observação: eu encapsulei os comentários em '
s em ambas as extremidades, o que não é necessário, mas ajuda a garantir que eles sejam coloridos corretamente aqui.