2017-02-07 40 views
0

如果我通過10個文檔循環並填充Excel文檔中的數據,那麼有時導出速度很慢,有時速度很快。 這怎麼可能,我這是怎麼導出數據:備註將數據導出爲ex​​cel緩慢

Set objExcel = CreateObject("Excel.Application") 
objExcel.Application.Visible = True 
Call objExcel.Application.Workbooks.Open(CorDos.CorBestandsnaam) 
Set xlSheet = objExcel.Application.ActiveWorkbook.Activesheet 

,然後將其填充細胞..

這些文件是在數據庫中這是另一臺服務器上,這臺服務器有時也有一些I/O問題也可能是問題所在?

回答

1

這不是Lotus Notes的問題,而是典型的Excel自動化問題。只要搜索「excel vba slow」,你會發現大量的文章如何使這個速度再次。將某些東西寫入excel的最快方法是:在LotusScript中創建一個2維數組,並將文檔值分配給該數組。那麼馬上寫出整個數組。這看起來是這樣的:

... 
Set dc = db.UnprocessedDocuments 
... 
Redim varArray(dc.Count - 1, NumberOfFields) as String 

Set doc = dc.getFirstDocument() 
While not doc is Nothing 
    varArray(i , 0) = doc.GetitemValue("FirstField")(0) 
    varArray(i , 1) = doc.GetitemValue("SecondField")(0) 
    varArray(i , 2) = doc.GetitemValue("ThirdField")(0) 
    .... 
    i = i + 1 
    Set doc = dc.GetNextDocument(doc) 
Wend 
... 
xlSheet.Range(xlSheet.Cells(1,1), xlSheet.Cells(dc.Count,NumberOfFields)) = varArray 

這段代碼沒有進行測試,部分來自於this excel- vba- question響應服用,而應該告訴你要走的路。

0

我喜歡@ Torsten-Link的答案,但它可能不是您遇到的瓶頸。您可能需要考慮一種模式,在該模式中,構建excel文件或至少將要插入的數據整理到具有該數據的實際機器上,然後通過簡潔通信傳遞信息。 很多涉及速度問題的與本地處理和篩選遠程數據有關。另外,您應該將Visible設置爲false,然後確保它即使發生錯誤也會變爲true。將該可見性屬性設置爲真會減慢速度。