Jak zapisać wykres do pliku PNG lub GIF w programie Microsoft Excel?

27

Jak zapisać wykres do pliku PNG lub GIF w programie Microsoft Excel?

Wiem, że mogę zapisać jako plik HTML i użyć utworzonego tam obrazu, ale podejrzewam, że istnieje sposób, który nie tworzy innego bałaganu plików, których nie chcę. Z przyjemnością instaluję dodatek, jeśli jest to zalecana opcja.

Używam Excel 2003 i 2007, jeśli to ma znaczenie.

fmark
źródło
Oto wyjaśnienie i link do dodatku Excel (darmowego), który zrobi to za Ciebie: Ulepszona procedura eksportu wykresu
Jon Peltier

Odpowiedzi:

34

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.Exportmakra 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.

DMA57361
źródło
Wolę mieć sposób na wyeksportowanie go do tego samego folderu, co bieżący arkusz kalkulacyjny za naciśnięciem jednego przycisku
fmark
@fmark - w tym miejscu pojawia się makro, coś w tym stylu ActiveChart.Export ActiveWorkbook.Path & "\chart.png"(ale może nieco mądrzejsze!) w makrze powiązanym z przyciskiem paska narzędzi.
DMA57361
@fmark, nudziłem się i miałem kilka minut, więc zrzuciłem razem coś znacznie bardziej kompletnego. Sprawdź edycję, myślę, że da ci to naprawdę solidny punkt wyjścia.
DMA57361
Twoje zdrowie! Dam mu wir.
fmark
4

Najlepszym sposobem jest zapisanie pliku Excel jako HTML.

Następnie przejdź do folderu, w którym przechowywane były obrazy, a zobaczysz żądane obrazy PNG.

João Pimentel
źródło
Muszę w pełni się zgodzić, że to naprawdę najszybsza metoda. O wiele.
Jeef
3

Aby bezpiecznie przekonwertować na format PNG, możesz skopiować rysunek z Excela, wkleić go na slajdzie w programie Power Point, a następnie wykonać następujące czynności.

Zapisz jakoInne formaty , a następnie wybierz żądany format. Następnie zapyta, czy chcesz zastosować to tylko do bieżącego slajdu, czy do wszystkich slajdów. Jeśli wybierzesz wszystkie slajdy, utworzy folder w podanym katalogu i zapisze każdy slajd w osobnym pliku w wybranym formacie.

Nie jest zbyt elegancki, ale może być wystarczająco szybki, gdy potrzebujesz tylko plików, i jest szczególnie pomocny, jeśli masz już prezentację z tymi samymi wykresami.

sgildea
źródło
2

Stary wątek, ale na wypadek, gdyby ktoś wylądował tutaj z Google: Excel 2011 dla komputerów Mac ma opcję „Zapisz jako obraz” w menu po kliknięciu prawym przyciskiem myszy, aby zrobić dokładnie to.

Dave Mulligan
źródło
Jaka wersja programu Excel? Mój Excel 2007 zdecydowanie tego nie ma. Trzymanie się 7-letniego pakietu Office jest prawdopodobnie „środkiem oszczędnościowym”.
Ogre Psalm33,
Korzystam z programu Excel 2011 dla komputerów Mac.
Dave Mulligan
0

W programie Excel 2010 możesz to zrobić:

  1. Kliknij wykres, aby go wybrać.
  2. Kopiuj za pomocą CTRL + C lub klikając prawym przyciskiem myszy i wybierając Kopiuj.
  3. Przejdź do programu do edycji grafiki (użyłem Paint.net ).
  4. Pasta.

Następnie możesz zapisać obraz w dowolnym formacie.

Will Martin
źródło
0

Jeśli używasz Greenshot (oprogramowanie do przechwytywania ekranu), możesz skopiować wykres w Excelu ( Ctrl+ C), a następnie kliknąć prawym przyciskiem myszy ikonę Greenshot, wybrać Otwórz obraz ze schowka i zapisać go. Nie trzeba używać edytora graficznego.

gronostaj
źródło