2017-02-07 9 views
0

10個のドキュメントをループし、そのドキュメントのデータをExcelシートに入力すると、エクスポートが遅くなることがあります。これが可能である方法 、これは私がデータをエクスポートする方法である:notesゆっくりと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の問題もそれが問題になる可能性がありますか?

答えて

1

これはLotus Notesの問題ではなく、一般的なExcel自動化の問題です。単に「excel vba slow」を検索すると、これをもう一度高速化する方法がたくさんあります。優れたものを書く最速の方法は、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ファイルのビルドや、少なくとも挿入するデータの照合は、データを持つ実際のマシンで行い、情報を1つの簡潔なコミュニケーションに渡すというパターンを考えてみてください。 速度に関する問題の多くは、リモートデータのローカル処理とふるい分けに関連しています。

また、Visibleをfalseに設定し、エラーが発生してもtrueになるように設定する必要があります。 VisibleプロパティをTrueにすると、実際には遅くなります。

関連する問題