Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1448to1452
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige