Excel VBA


(Gelesen 1194 mal - 0 Mitglieder und 1 Gast betrachten dieses Thema.)
 Antwort Senden Sie dieses Thema 'Excel VBA' Drucken Anmelden / Register



Programmieren Forum & Hilfe »

Excel VBA

Seiten: [1]
Wir konnten helfen? Dann werde jetzt Computerhilfen-Fan bei StudiVZ / MeinVZ oder Facebook!
« VBA - dynamische Formeln erstellen&einfügen Delphi - Button »

ThS
Gast

Excel VBA




Hallo,
ich habe folgendes Problem:
Ich habe eine grosse Tabelle, die ich abhängig vom Inhalt der Zellen in Spalte Z in mehrere kleinere teilen und jeweils unter separaten Namen abspeichern muss.
Dazu habe ich ein VBA Modul geschieben, dass zunächst die Ursprungstabelle mehrfach kopiert und
unter neuen Namen speichert. Jede der so erzeugten Tabellen wird anschliessend geladen und abhängig vom Inhalt in Spalte Z werden alle überflüssigen Zeilen gelöscht.
Das ganze funkioniert auch, dauert aber extrem lange. Bis etwa Zeile 80 geht es schnell, dann
wird es immer langsamer und ab etwa Zeile 160-180 hat man den Eindruck, der PC hängt. Das

Programm kommt aber ordnungsgemäss zum Ende.
Wer hat eine Idee, was dieses Verhalten verursacht, bzw wie man das ganz beschleuningen kann.
Aktualisierung der Bildschirmanzeige und Autom.Kalkulieren habe ich bereits ausgeschlatet!
Diesen Beitrag melden   Gespeichert

Nighty Offline
Sr. Member Pro (9.746)  
*****
Re:Excel VBA


Poste doch mal den Code..

Gruß
Diesen Beitrag melden   Gespeichert

ThS
Gast
Re:Excel VBA


Public Sub CopySheets()
   NewLine = Chr(13)
   Tabs = Chr(9)
   Application.ScreenUpdating = False
   ChDir (InpPath)
   
   With Application
       .Calculation = xlManual
       .MaxChange = 0.001
   End With
   ActiveWorkbook.PrecisionAsDisplayed = False
   
   For ix1 = 1 To ixFoundDEFile                
       Application.StatusBar = "Create monthly Upd.File" & DEFile(ix1)
       UpdFile = Left(CreateFile(1), Len(CreateFile(1)) - 4) & "_" & DEFile(ix1) & ".xls"
       Workbooks.Open Filename:=CreateFile(1)
       ActiveWorkbook.SaveAs Filename:=InpPath & "\" & UpdFile, _
           FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
           ReadOnlyRecommended:=False, CreateBackup:=False
       CreateFile(1 + ix1) = UpdFile
       ActiveWindow.Close
   Next ix1
   
   For ix1 = 1 To ixFoundDEFile                
       OutStatusBar = "Update File: " & CreateFile(1 + ix1)
       Application.StatusBar = OutStatusBar
       ixRow = 3
       Workbooks.Open Filename:=CreateFile(1 + ix1)
       ActiveWorkbook.Worksheets("DE").Activate
       
       For ix2 = 3 To RowMaxDE
           If ActiveSheet.Cells(ixRow, DEColAdmin).Value <> DEFile(ix1) Then
               ActiveSheet.Rows(ixRow).Delete
           Else
               ixRow = ixRow + 1
           End If
           Application.StatusBar = OutStatusBar & " - Line " & ix2
       Next ix2
       
       ActiveSheet.Range("A1").Select
       ActiveWorkbook.Save
       ActiveWindow.Close
'        SavedFile(ix1) = "- " & UpdFile & Tabs2 & DEFileText(ix1 - 1) & NewLine
       SavedFile(30 + ix1) = "- " & CreateFile(30 + ix1)

   Next ix1

   With Application
       .Calculation = xlAutomatic
       .MaxChange = 0.001
   End With
   ActiveWorkbook.PrecisionAsDisplayed = False

End Sub
Diesen Beitrag melden   Gespeichert

Nighty Offline
Sr. Member Pro (9.746)  
*****
Re:Excel VBA


Warum wirfst die ungültigen aus der Ursprungstabelle(oder einer Kopie) nicht direkt raus und speicherst nacher die einzelnen Teile is doch viel weniger Aufwand und sicher auch schneller.

Gruß
Diesen Beitrag melden   Gespeichert

ThS
Gast
Re:Excel VBA


weil ich wie gesagt mehrere verschiedene Teile erzeugen muss, will sagen TeilA enthält zB Zeilen 5-20, Teil B Zeilen 1-4 und 21-33 usw.
Das erzeugen der verschiedenen Dateien geht wirlklich schnell, das Laden und Speichern ebenfalls. Das Löschen der Zeilen in ein und derseleben Tabelle ist das Probelem
Diesen Beitrag melden   Gespeichert

Nighty Offline
Sr. Member Pro (9.746)  
*****
Re:Excel VBA


Jo soweit verstanden..aber dann wärs doch einfacher du machst es von oben nach unten fertig in einem Zug.

Du hast ja Kriterien nachdem du die Abschnitte in neue Tabellen aufteilst.
Und du hast auch kriterien nachdem du nacher aus den Teiltabellen die Zeilen löschst oder?

Und was am längsten dauert is das Löschen der ungültigen Zeilen.

Also liegts doch nahe das einfach zu umgehen..

Warum prüfst du nicht jede Zeile auf Abschnitts Kriterium und gleich auf gültige Zeile.

Wenn gültige Zeile schreibst sie in die jeweilige neue Teiltabelle nächste Tabelle anlegen für nächsten Teilabschnitt, wieder zeilen prüfen und nur die schreiben die gültig sind.. usw

Dadurch entfällt das kopieren und öffnen der Tabellen und auch das rauslöschen aus denselben, also du schreibst praktisch sofort das ergebnis in die jeweilige Tabelle für den jeweiligen Abschnitt.

Gruß
Diesen Beitrag melden   Gespeichert

ThS
Gast
Re:Excel VBA


Danke, ok das ist eine Überlegung wert. Ich prüfe das mal  Smiley
Diesen Beitrag melden   Gespeichert
Seiten: [1]  Antwort Senden Sie dieses Thema 'Excel VBA' Drucken Anmelden / Register 



Ähnliche Themen:
Excel, Word und PowerPoint Dateien öffnen
Fehler in MS Excel: Falsche Ergebnisse beim Rechnen
Win XP/Excel 2000 - eine Excel-Datei doppelt öffnen (quasi gespiegelt)
Windows XP: Excel 2000: wie kann ich eine Konfiguration von Excel kopieren
EXCEL VBA : In EXCEL nach Buchstaben suchen und zuordnen
EXCEL:Wie stelle ich den Zahlenwert"9,90"dar(Excel streicht mir i
Mac OS X: Excel
EXcel
Excel XP


add bookmark Dieses PC / Computer Hilfe Thema speichern Facebbok Dieses PC / Computer Hilfe Thema speichern Dieses PC / Computer Hilfe Thema speichern Dieses PC / Computer Hilfe Thema speichern
Gehe zu:  
Programmieren 5 Programmieren 10 Programmieren 15 Programmieren 30 Programmieren 84 | Mehr Themen zu "Excel VBA"




Computerhilfen.de | Powered by SMF 2.5.1.
© 2001-2010, Lewis Media. Alle Rechte vorbehalten.

"Excel VBA" | Programmieren Forum & Hilfe - © Computerhilfen.de