Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dir Befehl braucht ewig

Forumthread: Dir Befehl braucht ewig

Dir Befehl braucht ewig
08.10.2015 11:22:54
Hannes
Halli Hallo Zusammen,
ich brauche mal wieder eure Hilfe :S
Ich erstelle mithilfe des Dir Befehls eine Liste aller Dateien im Ordner. Dabei sollen nur Dateien einer bestimmten Dateinamenlänge als auch Dateigröße eingelesen werden. Das tut auch sehr gut das ganze. Allerdings braucht es wirklich sehr lange.
Gibt es eine Möglichkeit dies schneller zu gestalten?
ZB Über Shell den DIR Befehl über CMD ausführen?
Vielleicht hat ja jemand ne Idee ;)
Hier mein Code.

'Durchlauf durch alle Dateien mit Endung .gz im Ordner GZORDNERPFAD
For Each objFile In objFolder.Files
If Left(Right(objFile.Name, Len(objFile.Name) - InStrRev(objFile.Name, ".") + 1), 3) = ".gz" _
_
Then
'Bedingung 1: Löschen falscher Dateinamen
If Len(objFile.Name)  59 Then
GoTo sprung
End If
'Bedingung 2: Löschen unbeschriebener Datei, welche sonst zu fehler führt
If objFile.Size 

lg und vielen DANK

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dir Befehl braucht ewig
08.10.2015 11:51:23
Daniel
Hi
bist du sicher, das das DIR das langsame ist?
eine weiter Bremse ist in Excel auch immer das Eintragen von Werten in die Zellen.
bei dir würde sich anbieten, dass du die Dateinamen erst in einem Array sammelt und dann am Schluss die Dateinamen und die Formeln als Block für alle Fundstellen in einem Schritt einträgst.
ausserdem ist deine Programmierweise mit den Sprungmarken ungefähr so modern wie Breitcord-Schlaghosen.
der Code könnte etwa so aussehen:
Dim Dateien As String
Dim arrDat
For Each objFile In objFolder.Files
If Left(Right(objFile.Name, Len(objFile.Name) - InStrRev(objFile.Name, ".") + 1), 3) = ".gz" _
Then
If Len(objFile.Name) = 59 Then
If objFile.Size >= 200 Then
Dateien = Dateien & "|" & objFile.Name
End If
End If
End If
Next objFile
If Len(Dateien) > 0 Then
arrDat = WorksheetFunction.Transpose(Split(Mid(Dateien, 2), "|"))
With Cells(NextRow, 1).Resize(UBound(arrDat, 1), 1)
.Value = arrDat
.Offset(0, 1).FormulaR1C1 = "=LEFT(RC[-1],36)"
.Offset(0, 5).FormulaR1C1 = "=DATE(... hier dann deine lange Formel ...)"
End With
End If
ist natürlich nur ein Codefragment, basierend auf deinem Codefragment, in der Deklarierung stehen die zusätzlich von mir benötigten Variablen.
gruß Daniel
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige