注意导出数据以减慢速度

时间:2017-02-07 11:55:54

标签: excel lotus-notes lotusscript

如果我遍历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问题,这也是问题所在?

2 个答案:

答案 0 :(得分:1)

这不是Lotus Notes的问题,而是典型的Excel自动化问题。只需搜索“excel vba slow”,你会发现很多文章如何让它再次快速。为excel编写内容的最快方法是:在LotusScript中创建一个二维数组,并将文档值分配给该数组。然后立刻写完整个阵列。这看起来像这样:

...
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的回复,但应该向您展示前进的方式。

答案 1 :(得分:0)

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

另外,你真的应该将Visible设置为false,然后确保即使它出错也会变为true。将Visible属性设置为True确实会降低速度。

相关问题