Excel nie ma dostępnego dla użytkownika wsparcia dla tej funkcji, ale możesz albo łatwo obejść to, albo zalogować się do VBA, gdzie ta funkcja jest dostępna:
Eksport „jednorazowy”
- Wybierz wykres (cały wykres, a nie element wewnętrzny; wybierz więc ramkę).
- Skopiuj go (ctrl-c, kliknij prawym przyciskiem myszy kopię, cokolwiek chcesz).
- Otwórz MS Paint.
- Wklej (możesz najpierw zminimalizować rozmiar obrazu, zostanie on powiększony, aby pasował, ale nie zostanie zmniejszony).
- Zapisz zgodnie z życzeniem.
Eksport zbiorczy
Prawdopodobnie warto rozważyć użycie ActiveChart.Export
makra VBA, co pozwala określić ścieżkę do pliku, a następnie pozwala programowi Excel wykonać pracę.
Poniżej znajduje się działający prototyp, który właśnie przygotowałem. Uruchom ten, a każdy wykres w aktywnym skoroszycie zostanie wyeksportowany do tego samego folderu, co ten plik, w formacie PNG, z _chart##
dołączonym do nazwy pliku (gdzie ##
jest liczba rosnąca).
To nie wykonywać żadnych kontroli bezpieczeństwa (tak nadpisze plików!) I nie zawiera żadnych sprawdzanie błędów. Nie będzie działać, jeśli skoroszyt nie został jeszcze zapisany, lokalizacja jest tylko do odczytu lub cokolwiek innego, co uniemożliwia zapis do lokalizacji pliku. Przetestowałem to tylko w programie Excel 2003 (ponieważ to wszystko, co mam teraz pod ręką).
Innymi słowy: Używaj na własne ryzyko , jest to tylko podstawowy przykład działania .
'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
Uwaga: umieściłem komentarze na '
s na obu końcach, co nie jest potrzebne, ale pomaga upewnić się, że są tutaj poprawnie pokolorowane.