Excel 2010 VBA Выдалення Chart

Я падтрымліваю заяву Excel VBA ў вольны час. Я інжынер-тэхнолаг вытворчасці, а не прафесійны распрацоўшчык.

Картаграфавання ўчасткі applicaiton працавалі без праблем у Excel 2007. Маёй кампанія мадэрнізуе ў Excel 2010 і тое ж прыкладанне, у цяперашні час ёсць праблемы з узаемадзеяннем з графікамі на працоўных лістах.

Thie праблема з гістаграмы. Дадатак, калі пераўсталёўку, выдаляе серыю з дыяграмы, выкарыстоўваючы код, прыведзены ніжэй. Я зрабіў гэта так, што ў той час як новыя дадзеныя імпартуюцца/апрацоўваецца там не раз, калі Дыяграма прадстаўлена карыстачу, ня ўдакладнены з апошнімі дадзенымі.

        '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 пабегла, увесь бар-дыяграма «страчаная» (выдаленая), а не на графіцы прысутным без якой-небудзь пэўнай серыі.

«Страчанай» дыяграма, здаецца, адбываецца, калі concsecutive расстрэлы базавага кода ажыццяўляецца з дапамогай іншай частцы VBA код, які аўтаматычна стварае серыю графікаў і капіюе іх у PowerPoint.

Калі паслядоўнасць дыяграм executated ўручную, яна працуе без праблем. Калі аўтаматычна пабег па генерацыі другі паслядоўнасці Маючы зносіны, графік становіцца выдалены.

Я спадзяюся, што хто-то знаёма са зменамі ў картаграфавання ад Excel 2007 да версіі 2010 і будзе ў стане дапамагчы.

дзякуй,

Len

3
Вы ў стане пацвердзіць, што дыяграмы фактычна выдаленыя, або магчыма Дыяграма паварочвалася нябачнай? Ці ёсць на самой справе паменшыць даўжыню калекцыі ChartObjects для бягучага ліста? Калі мы мадэрнізавалі існуючыя працоўныя кнігі, якія маюць дыяграмы коды маніпуляцыі з Excel 2003 у Excel 2007 г., мы выявілі, што наш код будзе occationally выклікаць дыяграмы знікаюць з поля зроку, але яны ўсё яшчэ былі там на заднім плане. Калі яны ўсё яшчэ там, гэта можа здацца дзіўным, але калі вы ідзяце ў панэль кіравання і прыпынку, а затым запусціць сэрвіс пад назвай «Дыспетчар чарзе друку», яны могуць зноў з'явіцца.
дададзена аўтар Michael Kingsmill, крыніца
Мы знайшлі лепшае рашэнне гэтай праблемы было пісаць код, які ўпаў і адноўлены ўсе графікі з нуля, як свежыя 2010 дыяграмы, каб выдаліць які-небудзь прыхаванай «карупцыі» ад версіі Excel 2003.
дададзена аўтар Michael Kingsmill, крыніца
Майкл, дзякуй. Я спадзяюся, ёсць нейкі час на наступным тыдні, каб вярнуцца на гэта. З графікамі аб'екта падвяргаючыся падчас запісу макрасаў з 2010 годам, я магу зрабіць гэта і выдаліць усю табліцу і стварыць наноў з нуля кожны раз, каб быць у стане мець поўны кантроль. Я Initally хацеў зрабіць, што пры пераходзе да версіі 2007 г., але дыяграмы аб'екта змяніўся і мадэль аб'екта не падвяргаючыся ў запісе макрасаў, гэта было трохі занадта шмат, каб адкусіць. Я адпраўлю абнаўленне, калі я дзе-то з гэтым.
дададзена аўтар NitroLen, крыніца

2 адказы

Гэта можа дапамагчы перарабіць свой код, каб вы не актывуюць/выбару, а затым у залежнасці ад «актыўнага» аб'екта не мяняецца: што можа зламацца, калі які-небудзь іншы код актывуе якой-небудзь іншы аб'ект, калі вы не чакалі яго ...

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
2
дададзена
Гэта, вядома, лепш дызайн, выбар дыяграмы на схаваных лістах, напрыклад адкіне выключэнне падчас выканання, таму лепш ніколі не выбіраць аб'екты працоўнага ліста. Акрамя таго, не паварочваючы экран абнаўлення прэч, гэта дапаможа захаваць экран ад мігатлівых занадта шмат. Аднак, гэта не будзе многае зрабіць, каб вырашыць вашу праблему.
дададзена аўтар Michael Kingsmill, крыніца
Добрая лепшая практыка. Я зраблю гэта. Я стараюся звесці да мінімуму, непасрэдна якія працуюць ж/абраных аб'ектаў, але яна працуе, абнаўленне экран быў выключаны, так пераключыўся на іншыя задачы!
дададзена аўтар NitroLen, крыніца

Я reformated ўсіх узаемадзеянняў з дыяграмай, каб выкарыстоўваць «з», а не выбарам. Яго лепш праграмавання.

На жаль, гэта не вырашыла праблему.

Заўвагі адносна Дыспетчар чарзе друку былі карыснымі і, падобна, праблема звязана з узаемадзеяннем з тым, як з'яўляюцца графікі на экране і на друкарцы.

спасылка

Як і многія іншыя карыстальнікі ў маёй арганізацыі маюць розныя друкаркі і пры спробе драйверы друку MS Office, як па змаўчанні не палепшылі restuls іншае рашэнне павінна было быць знойдзена.

Праблема паўстала пры выкарыстанні VBA кода для капіявання працоўнага ліста elemetnts ў PowerPoint. Перапісваў ў якасці друкаркі, bitmat з дапамогай:

rSlideArea.CopyPicture (2)  

Зменены для капіявання, як экран растравага малюнка з дапамогай:

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

Цікава выніковыя PowerPoint файлы з растравым фарматаванне было лягчэй працаваць, і былі менш.

Вынікам з'яўляецца тое, што выявы ў PowerPoint не як "даволі» з фарматаваннем экрана, але прыкладанне зараз працуе ў V2010 Excel, які быў непасрэдным прыярытэтам.

Дзякуй усім, хто дапамог.

0
дададзена