2017-02-07 5 views
0

Wenn ich 10 Dokumente durchlaufen und füllen Sie ein Excel-Blatt mit Daten aus diesen Dokumenten dann manchmal der Export ist langsam und manchmal ist es schnell. Wie dies möglich ist, das ist, wie ich Daten exportieren:Notizen exportieren Daten zu Excel langsam

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

und dann füllt es die Zellen ..

Die Dokumente in einer Datenbank sind, die auf einem anderen Server ist dieser Server auch hat manchmal einige Probleme mit I/O könnte das auch das Problem sein?

Antwort

1

Dies ist kein Problem von Lotus Notes, sondern ein typisches Problem der Excel-Automatisierung. Suchen Sie einfach nach "Excel VBA Slow", und Sie werden Tonnen von Artikeln finden, wie man das schnell wieder macht. Der schnellste Weg, etwas in Excel zu schreiben, ist: Erstellen Sie ein zweidimensionales Array in LotusScript und weisen Sie diesem Array die Dokumentwerte zu. DANN schreibe das ganze Array auf einmal. Das sieht wie folgt aus:

... 
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 

Dieser Code ist nicht getestet und zum Teil aus einer Antwort auf this excel- vba- question genommen, aber Sie sollten den Weg zu gehen.

0

Ich mag @ Torsten-Link's Antwort, aber es ist vielleicht nicht der Flaschenhals, den Sie erleben. Vielleicht möchten Sie ein Muster in Betracht ziehen, bei dem das Erstellen der Excel-Datei oder zumindest das Zusammenstellen der Daten, die eingefügt werden sollen, auf der tatsächlichen Maschine erfolgt, die die Daten enthält, und die Informationen dann in einer knappen Kommunikation weitergibt. Viel der Probleme im Zusammenhang mit der Geschwindigkeit beziehen sich auf die lokale Verarbeitung und Sichten von Remote-Daten.

Auch sollten Sie Visible wirklich auf false setzen, dann stellen Sie sicher, dass es auch dann wahr wird, wenn es falsch ist. Wenn diese Eigenschaft "Sichtbar" auf "True" gesetzt wird, verlangsamt dies die Vorgänge erheblich.

Verwandte Themen