schumischumi
Lt. Commander
- Registriert
- Dez. 2011
- Beiträge
- 1.056
Hallo zusammen,
ich stehe vor der Herausforderung in einem bestehenden Excel Dokument regelmäßig (alle 2 Wochen) bestehende Werte abzuändern und zu kennzeichnen (rot markieren und Kommentar mit altem Wert).
Mit Powershell und der COM Schnittstelle funktioniert das programmatisch einwandfrei, aber die Ausführungszeit ist ekelhaft lang. Für eine zu ändernde Zelle mehrere Sekunden. Bei 1500-2000 Änderungen zieht sich das und ich komme teilweise auf mehrere Stunden.
Klar die COM-Schnittstelle ist unglaublich langsam, aber evtl. kann man an der Logik noch was optimieren.
Und zwar wäre meine Idee:
- Eine Range definieren
- Alle Werte in diese Range eintragen
- Einmal die Range über die COM-Schnittstelle setzen.
D.h. statt 2000 Zellen mit je 3 Anpassungen, nur noch 2 Ranges (Wert und Farbe) anpassen und 2000 mal den Kommentar.
Prinzipiell funktioniert das auch, aber ich habe die Werte nicht nebeneinander (z.B. A5-A12) sondern jeweils einzeln (z.B. A5, B12, D1...).
Habt ihr eine Idee wie man diese Range abbilden könnte, ohne erst alle Werte (auch die sich nicht geändert haben) einzulesen und über die druchgänige Range zu befüllen?
Zusatzfrage: Das Nadelöhr scheint die CPU zu sein, da sie beim Excel-Prozess bei ~25% dicht macht. Was bei HT (Core i7) einem logischen Kern entspricht. Kann ich Excel oder die Schnittstelle zum Multithreading zwingen (Haken bei "Multithread-Verabreitung aktivieren" ist gesetzt) oder bring das deaktiveren von HT was?
Danke euch!
PS: Falls das Thema besser zu Office passt bitte einfach verschieben
Edit: Win8 64Bit, Excel 2013 32 Bit, Powershell 4 64Bit
ich stehe vor der Herausforderung in einem bestehenden Excel Dokument regelmäßig (alle 2 Wochen) bestehende Werte abzuändern und zu kennzeichnen (rot markieren und Kommentar mit altem Wert).
Mit Powershell und der COM Schnittstelle funktioniert das programmatisch einwandfrei, aber die Ausführungszeit ist ekelhaft lang. Für eine zu ändernde Zelle mehrere Sekunden. Bei 1500-2000 Änderungen zieht sich das und ich komme teilweise auf mehrere Stunden.
Klar die COM-Schnittstelle ist unglaublich langsam, aber evtl. kann man an der Logik noch was optimieren.
Und zwar wäre meine Idee:
- Eine Range definieren
- Alle Werte in diese Range eintragen
- Einmal die Range über die COM-Schnittstelle setzen.
D.h. statt 2000 Zellen mit je 3 Anpassungen, nur noch 2 Ranges (Wert und Farbe) anpassen und 2000 mal den Kommentar.
Prinzipiell funktioniert das auch, aber ich habe die Werte nicht nebeneinander (z.B. A5-A12) sondern jeweils einzeln (z.B. A5, B12, D1...).
Habt ihr eine Idee wie man diese Range abbilden könnte, ohne erst alle Werte (auch die sich nicht geändert haben) einzulesen und über die druchgänige Range zu befüllen?
Zusatzfrage: Das Nadelöhr scheint die CPU zu sein, da sie beim Excel-Prozess bei ~25% dicht macht. Was bei HT (Core i7) einem logischen Kern entspricht. Kann ich Excel oder die Schnittstelle zum Multithreading zwingen (Haken bei "Multithread-Verabreitung aktivieren" ist gesetzt) oder bring das deaktiveren von HT was?
Danke euch!
PS: Falls das Thema besser zu Office passt bitte einfach verschieben
Edit: Win8 64Bit, Excel 2013 32 Bit, Powershell 4 64Bit