备注导出数据为excel慢

如果我通过10个文档循环,并填写Excel文件中的数据,然后有时出口是缓慢的,有时它是快速的。 这怎么可能,这是我如何导出数据:

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

然后它填满细胞

文件是在另一台服务器上的数据库,这台服务器有时也有一些与I / O问题也可能是问题?

这不是Lotus Notes的问题,而是典型的Excel自动化问题。 只要search“excel vba慢”,你会发现吨文章如何使这个又快又快。 将某些东西写入excel的最快方法是:在LotusScript中创build一个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 

这个代码没有经过testing,部分来自对这个excel- vba-问题的回应,但应该告诉你要走的路。

我喜欢@ Torsten-Link的答案,但它可能不是你遇到的瓶颈。 你可能想要考虑一个模式,在这个模式下,build立excel文件,或者至less将数据插入到其中,在具有数据的实际机器上完成,然后在一个简洁的通信中传递信息。 与速度有关的许多问题与本地处理和筛选远程数据有关。

另外,你应该将Visible设置为false,然后确保它即使错误也是真的。 将“可见”属性设置为“真”会减慢速度。