Excel 2010 VBA удаляет диаграммы - PullRequest
3 голосов
/ 27 октября 2011

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

Диаграммные части приложения работали без проблем в Excel 2007. Моя компания обновляет до Excel 2010, и теперь это же приложение испытывает проблемы с взаимодействием сдиаграммы на рабочих листах.

Эта проблема связана с гистограммой.Приложение при сбросе удаляет серию из диаграммы, используя код ниже.Я сделал это так, чтобы при импорте / обработке новых данных не было времени, когда пользователю представляется диаграмма, которая не соответствует последним данным.

        'select the histogram chart
        Sheets(sChartSheet).Select
        ActiveSheet.ChartObjects("Chart 15").Activate

        Call PBarCaption("Delete Existing Histogram Series")
        'remove any existing series
        For i = 1 To ActiveChart.SeriesCollection.Count
            ActiveChart.SeriesCollection(1).Delete
        Next i

затемсоздает новую серию, поскольку новые данные для диаграммы импортируются из внешнего файла данных:

    'add series for histogram
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).Values = "=HistogramData!$B$5:$B$29"
    ActiveChart.SeriesCollection(1).XValues = "=HistogramData!$A$5:$A$29"
    ActiveChart.SeriesCollection(1).charttype = xlColumnClustered

Проблема с 2010 состоит в том, что иногда, когда выполняется код VBA, вся гистограмма «теряется» (удалено), а не диаграмма, присутствующая без какой-либо определенной серии.

Кажется, что «потерянная» диаграмма возникает, когда последовательное выполнение базового кода выполняется через другой раздел кода VBA, который автоматически создает серию диаграмм и копирует их в PowerPoint.

Когда последовательность диаграмм выполняется вручную, она работает без проблем.Когда запускается автоматически, при генерации второй последовательности чата диаграмма удаляется.

Я надеюсь, что кто-то знаком с изменениями в диаграммах с версии Excel 2007 до 2010 и сможет помочь.

Спасибо,

Лен

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

Это может помочь переработать ваш код, чтобы вы не активировали / не выбирали, а затем зависели от того, что «активный» объект не изменяется: это может сломаться, если какой-то другой код активирует какой-либо другой объект, когда вы этого не ожидаете..

Dim cht As Chart

Set cht = ActiveWorkbook.Sheets(sChartSheet).ChartObjects("Chart 15").Chart
Do While cht.SeriesCollection.Count > 0
    cht.SeriesCollection(1).Delete
Loop

With cht.SeriesCollection
    .NewSeries
    With .Item(1)
        .Values = "=HistogramData!$B$5:$B$29"
        .XValues = "=HistogramData!$A$5:$A$29"
        .ChartType = xlColumnClustered
    End With
End With
0 голосов
/ 09 ноября 2011

Я переформатировал все взаимодействия с диаграммой, чтобы использовать «с» вместо выбора. Его лучшее программирование.

К сожалению, это не решило проблему.

Комментарии, касающиеся диспетчера очереди печати, были полезны, и похоже, что проблема связана с взаимодействием с тем, как диаграммы отображаются на экране и на принтере.

Ссылка

Поскольку многие другие пользователи в моей организации используют разные принтеры, и при попытке установить драйверы печати MS Office по умолчанию не удалось улучшить настройки, нужно было найти другое решение.

Проблема возникла при использовании кода VBA для копирования элементов листа в PowerPoint. Копировал как принтер, используя bitmat:

rSlideArea.CopyPicture (2)  

Изменено копирование в виде растрового изображения с использованием:

rSlideArea.CopyPicture Appearance:=xlScreen, Format:=xlBitmap

Интересно, что получающиеся в результате файлы PowerPoint с растровым форматированием были проще в работе и были меньше.

В результате изображения в PowerPoint выглядят не очень красиво с форматированием экрана, но теперь приложение работает в Excel v2010, что было приоритетным.

Спасибо всем, кто помог.

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