Excel отсутствует какой - либо доступной пользователю поддержку этой функции, но вы можете легко обойти эту проблему или углубимся в VBA, где предусмотрена эта функция:
"Однократный" экспорт
- Выберите график (весь график, а не внутренний компонент; поэтому выберите границу).
- Скопируйте его (Ctrl-C, щелкните правой кнопкой мыши, все что угодно).
- Откройте MS Paint.
- Вставить (вы можете сначала уменьшить размер изображения, оно будет увеличено, но не уменьшено).
- Сохраните по желанию.
Массовый экспорт
Возможно, вы захотите взглянуть на использование ActiveChart.Export
в макрос VBA позволяет указать путь к файлу, а затем позволяет Excel выполнять всю работу.
Ниже приведен рабочий прототип, который я только что собрал. Запустите эту диаграмму, и каждая диаграмма в активной рабочей книге будет экспортирована в ту же папку, что и этот файл, в формате PNG с _chart##
добавленным к имени файла (где ##
- увеличивающееся число).
Он не выполняет никаких проверок безопасности (поэтому будет перезаписывать файлы!) и не содержит проверки ошибок. Он не будет работать, если вы еще не сохранили книгу, ее местоположение доступно только для чтения или что-либо еще, что препятствует записи в местоположение файла. Я только что проверил это в Excel 2003 (так как это все, что мне нужно на данный момент).
Другими словами: используйте на свой страх и риск, это только в качестве основного рабочего примера.
'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
Примечание: я заключил комментарии в '
s ' на обоих концах, что не нужно, но помогает убедиться, что они здесь правильно окрашены.