2015-11-08 20 views
0

我有50多個折線圖,每個圖表有12個數據系列。每個系列有2000個數據點。在打開工作簿後,通過設置ActiveSheet.ChartObjects(chart_name).Visible = True來顯示圖表首先需要2秒鐘。瀏覽所有圖表(一步一步)以進行快速審查,感覺就像是一直持續下去。加速圖表顯示

我正在尋找任何可以使此顯示過程更快的高級技巧或技巧。

我能在主題中找到的是以下鏈接,但我不知道它說了什麼。

https://social.msdn.microsoft.com/Forums/office/en-US/b7c63f9d-e373-4455-a793-f58707353032/excel-2010-extemely-slow-chart-rendering-vs-2003?forum=exceldev

搜索「部分解決」找到他們的部分解決方案的具體職位。

回答

0

那麼我想出了一個省時的方法。我希望我不是隻寫這張白紙。如果你正在閱讀本文,請給我一些反饋。

據我瞭解,只要excel呈現圖表,它會進入內存,當它被設置爲可見(隱藏後)時,該過程快10倍。在我的情況下,圖表的第一次渲染是2.7秒長,但第二次只需要0.3秒。當你習慣了快速工作流程時,2秒鐘感覺像是地獄。

以某種方式解決方案正在經歷(設置可見)開始時的所有圖表將它們加載到內存中。這比將圖表數量乘以測量的2.7s快得多。 50個圖表加載28s而不是135s。閃爍的圖表可能會令人沮喪,但用簡單的白色形狀作爲臨時封面也是可以解決的。

程序:

ActiveSheet.Shapes("COVER").Visible = True 
ActiveSheet.Shapes("COVER").TextFrame.Characters.Text = "Loading charts (0/50)" 

For counter = 1 To 50 

    chart_name = Sheets("Data").Cells(counter , 1) 
    ActiveSheet.ChartObjects(chart_name).Visible = True 
    DoEvents 
    ActiveSheet.ChartObjects(chart_name).Visible = False 
    ActiveSheet.Shapes("COVER").TextFrame.Characters.Text = "Loading charts (" & counter & "/50)" 

Next counter 

ActiveSheet.Shapes("COVER").Visible = False 

成功,yaay。