Excel non ha alcun supporto accessibile all'utente per questa funzionalità, ma puoi facilmente aggirare questo o scavare in VBA, dove questa funzionalità è fornita:
Esportazione "One-shot"
- Seleziona il grafico (l'intero grafico, non un componente interno; quindi seleziona il bordo).
- Copialo (ctrl-c, fai clic con il pulsante destro del mouse, qualunque cosa ti piaccia).
- Apri MS Paint.
- Incolla (potresti voler prima ridurre al minimo le dimensioni dell'immagine, verrà ingrandita per adattarla, ma non ridotta).
- Salva come desiderato.
Esportazione in blocco
Probabilmente vorrai esaminare l'utilizzo ActiveChart.Export
in una macro VBA, questo ti consente di specificare un percorso di file e quindi Excel fa il lavoro.
Di seguito è riportato un prototipo funzionante che ho appena messo insieme. Esegui questo e tutti i grafici nella cartella di lavoro attiva verranno esportati nella stessa cartella di quel file, in formato PNG, con l' _chart##
aggiunta del nome del file (dove ##
c'è un numero crescente).
Esso non effettua alcun controllo di sicurezza (così sarà sovrascrivere i file!) E non contiene alcun controllo degli errori. Esso non funziona se non si è ancora salvato la cartella di lavoro, la posizione è di sola lettura o di qualsiasi altra cosa che impedisce la scrittura la posizione del file. L'ho provato solo in Excel 2003 (dato che al momento è tutto ciò che devo fare).
In altre parole: utilizzare a proprio rischio , questo è inteso solo come esempio di lavoro di base .
'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
Nota: ho racchiuso i commenti in '
s ad entrambe le estremità, il che non è necessario, ma aiuta ad assicurarmi che siano colorati correttamente qui.