Экспорт всех графиков в формате PNG - PullRequest
3 голосов
/ 07 ноября 2011

Я пытаюсь экспортировать все диаграммы в моем файле Excel как изображение PNG. Диаграммы не встраиваются в рабочие таблицы, а вместо этого перемещаются как новый лист при создании.

Не знаком с VBA или офисными макросами, я пытался связать воедино что-то на основе примеров кода, которые я нашел в сети, но безуспешно.

Вот что я попробовал, это может работать с диаграммами, встроенными в рабочие таблицы, но не с автономными диаграммами:

Private Sub ExportChartsButton_Click()
    Dim outFldr As String
    Dim ws As Worksheet
    Dim co As ChartObject

    outFldr = GetFolder(ActiveWorkbook.Path) 
    For Each ws In ActiveWorkbook.Worksheets
        For Each co In ws.ChartObjects
            co.Export outFldr & "\" & ws.Name & ".png", "PNG"
        Next
    Next
End Sub

Когда кнопка нажата, кажется, ничего не происходит.

Если я заменю внутренний цикл на MsgBox co.ChartObjects.Count, я получу всплывающее окно 0 для каждого из моих рабочих листов, не относящихся к диаграмме, поэтому я, очевидно, не выполняю итерацию по нужным объектам (следовательно, нет диаграмм, поэтому ничего не происходит).

Итак, как мне перебирать диаграммы, которые не встроены в таблицы?

Ответы [ 2 ]

5 голосов
/ 07 ноября 2011

Я нашел решение. Мне пришлось использовать ActiveWorkbook.Charts вместо .Worksheets.

Private Sub ExportChartsButton_Click()
    Dim outFldr As String
    Dim wc As Chart
    Dim co As ChartObject

    outFldr = GetFolder(ActiveWorkbook.Path)
    If outFldr = "" Then
        MsgBox "Export Cancelled"
    Else
        For Each wc In ActiveWorkbook.Charts
            wc.Export outFldr & "\" & wc.Name & ".png", "PNG"
        Next
    End If
End Sub

А для записи, GetFolder() определяется как:

Function GetFolder(strPath As String) As String
    Dim fldr As FileDialog
    Dim sItem As String
    Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
    With fldr
        .Title = "Select folder to export Charts to"
        .AllowMultiSelect = False
        .InitialFileName = strPath
        If .Show = True Then sItem = .SelectedItems(1)
    End With
    GetFolder = sItem
    Set fldr = Nothing
End Function

Комментарии / предложения приветствуются.

1 голос
/ 01 июня 2016

Возможно, один из самых простых способов экспорта - сохранить всю книгу в виде веб-страницы.Excel затем автоматически конвертирует ваши диаграммы в PNG

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...