Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  in Excel schreiben: schlechte Performance

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

erstellt am: 29. Mai. 2008 09:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


screen.gif


Excel_schreiben_Performance.zip

 
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


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

erstellt am: 31. Mai. 2008 08:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von c.schojer an!   Senden Sie eine Private Message an c.schojer  Schreiben Sie einen Gästebucheintrag für c.schojer

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 21. Jun. 2008 22:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für joern bosse 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

erstellt am: 23. Jun. 2008 12:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Chris,
Zitat:

Aber wie ich sehe hast es eh raus!


Das stimmt wohl, aber jetzt fühle ich mich nicht mehr ganz so allein 

------------------
viele Grüße

Jörn

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz