| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: in Excel schreiben: schlechte Performance (1820 mal gelesen)
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004
|
erstellt am: 29. Mai. 2008 09:18 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte mit VBA eine Exceldatei öffnen und die Zellen beschreiben, mein Problem ist die Performance: das dauert ewig. Also gehe ich erstmal davon aus, das ich irgendwas komplett falsch mache. Vom Prinzip bin ich so an die Sache rangegangen:
Code:
Dim ExcelWorkbook As Excel.Workbook Dim ExcelWorksheet As Excel.Worksheet Dim Pfad As String Pfad = "c:\temp\muster2.xls" Set ExcelWorkbook = Excel.Application.Workbooks.Open(FileName:=Pfad) Set ExcelWorksheet = ExcelWorkbook.ActiveSheet ExcelWorksheet.Cells((1 + j), 1) = "Zelle A " & CStr(1 + j)
Gibt es da effizientere Methoden, z.B. eine Lösung mit ExcelWorksheet.Range (kann man alle Zellen einer Zeile in einem Arbeitschritt schreiben?) Ich habe die Datei "Projekt.dvb" und "muster2.xls" angehängt, in der sind 2 Funktionen enthalten:
"ExcelWrite": es werden 10 Zeilen in die Exceldatei "c:\temp\muster2.xls" geschrieben. "ExcelWrite1": es wird nur die Kopfzeile gefüllt, die Zeilen zum beschreiben der Zellen habe ich auskommentiert, damit ich ausschließen kann, das der Fortschrittsbalken für die schlechte Performance zuständig ist. Die verwendeten Verweise habe ich als Bilddatei angehängt. Zum Testen muss die Datei "muster2.xls" in das Verzeichnis "c:\temp" kopiert werden. ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 30. Mai. 2008 15:14 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich nochmal, ein paar neue Erkenntnisse habe ich dazugewonnen: Es gibt eine bißchen effizientere Methode zum beschreiben der Zeilen: Code:
For j = 0 To 7 With ExcelWorkbook.Worksheets("codiertes Aufmass") .Range(.Cells((i + 2), (j + 1)), .Cells((i + 2), 7)) = "Zelle " & CStr(i + 2) & "," & CStr(j + 1) End With
Das ist aber nicht das eigentliche Problem gewesen, der Übeltäter war die Datei "muster2.xls", irgendwas ist da drin, was den Schreibvorgang extrem ausbremst, wenn ich eine andere Datei nehme geht das RatzFatz. Jetzt reichts aber erstmal, ich mache WE ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004
|
erstellt am: 31. Mai. 2008 08:37 <-- editieren / zitieren --> Unities abgeben:
Auch wenn dies hier so langsam ein einsames Selbstgespräch wird, ich habe den Schuldigen für das Problem gefunden: Der Druckbereich, nachdem ich ihn entfernt war die Performance wieder in Ordnung. Warum auch immer , ich bin jetzt glücklich ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
c.schojer Mitglied
Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 21. Jun. 2008 22:13 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Hallo Joern! Also die effizienteste Methode daten von Autocad nach Excel zu bekommen ist über Arrays! und diese weißt du dann einfach einem Bereich in Excel zu! Wenn du nicht weißt wie ein Bereich in Form eines Arrays aussieht dann markiere einfach einen Bereich und schreibe ein Makro Sub test() Dim a a = Selection End Sub '<-- Da machst nen stopper rein und guckst dir dann die Variable in Excel-Debugger an Bereich in Excel guckt dann so aus range(cells(1,1),cells(2,5)) Aber wie ich sehe hast es eh raus! Der bremser könnte ev ein Event sein oder eine selbstgeschriebene Funktion die im Formular verwendet wird????(hatte ich mal) Mfg Chris
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004
|
erstellt am: 23. Jun. 2008 12:17 <-- editieren / zitieren --> Unities abgeben:
|