Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1600to1604
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

Code Beschleunigen oder Ladebalken

Code Beschleunigen oder Ladebalken
19.01.2018 10:21:12
Manuela
Hallo zusammen,
hat einer eine Idee wie ich folgenden Code Beschleunigen kann oder es Visuell besser Darstellen kann.
Jedes mal wenn ich diesen Code Aufrufe und es mehr wie 500 Dateien auszulesen sind, sieht es so aus als würde excel sich aufhängen.
Ich glaube am Code selber kann man nicht verbessern, der Prozess geht nun mal so schnell wie die Rechen Power / Netzwerk usw. nun mal ist.
Kann man aber so ein Ladebalken oder irgendwas Visuelles integrieren ?
Sub Fail_zählen_Zeitraum()
'Zählt die Dateien vom Angegebenen Start/End Datum
On Error GoTo Variante
Dim fso As Object
Dim fsf As Variant
Dim datStart As Date, datEnde As Date, datDatei As Date
Dim iCount As Integer
datStart = ActiveSheet.Range("I8").Value 'Start Datum
datEnde = ActiveSheet.Range("I9").Value 'End Datum
Set fso = CreateObject("Scripting.FileSystemObject")
For Each fsf In fso.getFolder([U3] & [I7]).Files 'pfad steht auf U3 & L7
'Dateidatum ohne Uhrzeit ermitteln
datDatei = CDate(Format(fsf.datelastmodified, "DD-MM-YYYY"))
If datDatei >= datStart And datDatei iCount = iCount + 1
End If
Next
ActiveSheet.Range("B2") = iCount 'Da wird der Counter niedergeschrieben
Set fso = Nothing
Exit Sub

Gruß
Manuela

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nur zählen?
19.01.2018 10:27:33
Fennek
Hallo,
wenn ich den Code richtig verstanden habe, geht es darum die Anzahl der Datein gespeichert in einem bestimmten Zeitraum zu bestimmen.
Wenn das so wäre gibt as andere, viel schnellere Ansätze (CMD: dir)
mfg
AW: nur zählen?
19.01.2018 10:40:38
Manuela
Hallo,
genau.
Der Code Zählt die txt Dateien die in den angegebenen Zeitraum sind und schreibt mir die Zahl in der Zelle B.
Wie würde dein Excel Code aussehen, sodass ich die CMD befehle steuern kann ?
Gruß
Manuela
AW: CVBA (CMD:Dir)
19.01.2018 11:16:33
Fennek
Hallo,
speichere ein neues Workbook mit diesem Code in dem Verzeichnis, das gezählt werden soll.
In A2 dasAnfangsdatum, in B2 das Enddatum, Ergebnis in B4:

Sub iFen()
Dim Tag As Date
fn = Filter(Split(CreateObject("wscript.shell").exec("cmd /c Dir """ & ThisWorkbook.Path & "\* _
.*""").stdout.readall, vbCrLf), "= Cells(1, 2) And Tag 
Falls es Umlaute in Pfad- bzw Dateinamen geben sollte, ist eine Ergänzung notwendig.
mfg
(Code von snb, etwas angepasst)

Anzeige
?
19.01.2018 12:36:13
Rudi
AW: ? Ups
19.01.2018 12:49:11
Fennek
Das Einfügen macht Probleme.
Bitte GROESSER Zeichen und KLEINERZeichen umsetzen

Sub iFen()
Dim Tag As Date
fn = Filter(Split(CreateObject("wscript.shell").exec("cmd /c Dir """ & ThisWorkbook.Path & "\* _
.*""").stdout.readall, vbCrLf), "GROESSER ZeichenDIRkleiner Zeichen", False)

2. Teil: ohne Unterbrechung anfügen

For i = 3 To UBound(fn)
'Anfangsdatum: B1; EndDatum in B2
If InStr(1, fn(i), ".") = 3 Then
Tag = CDate(Left(fn(i), 10))
If Tag >= Cells(1, 2) And Tag 

ersetze > durch &gt; < durch &lt owT
19.01.2018 13:00:54
Rudi
AW: Danke
19.01.2018 13:04:05
Fennek

Sub iFen()
Dim Tag As Date
fn = Filter(Split(CreateObject("wscript.shell").exec("cmd /c Dir """ & ThisWorkbook.Path & "\* _
.*""").stdout.readall, vbCrLf), "&ltDIR&gt", False)
For i = 3 To UBound(fn)
'Anfangsdatum: B1; EndDatum in B2
If InStr(1, fn(i), ".") = 3 Then
Tag = CDate(Left(fn(i), 10))
If Tag >= Cells(1, 2) And Tag 

Anzeige
AW: ...Und innerhalb von Pgmm ist das noch nicht ...
23.01.2018 16:00:43
Pgmm
Hallo,
tut mir leid für meine verspätete Antwort. War Krankheitsbedingt ausgefallen.
Zu deinem Code muss ich sagen das es super funktioniert hat. Habe denn noch etwas für mich angepasst. Was ich leider nicht geschafft habe ist, das sich das cmd Fenster im Hintergrund oder minimiert ausgeführt wird.
Kann mir das einer sagen wie und wo ich den Befehl dafür einfüge.
Hier der aktuelle Code.
Sub Fail_zählen()
'Ab Version 2.6 die zählung über cmd, geht viel schneller
'Zählt in der Userform den Inhalt der Variante im Ordner
'### Dateien im Fail Ordner Zählen ###
Dim Tag As Date
sPath = [U3] & [I7]
fn = Filter(Split(CreateObject("wscript.shell").exec _
("cmd /c Dir """ & sPath & "\*.txt").stdout.readall, vbCrLf), "", False)
For i = 3 To UBound(fn)
'Anfangsdatum: I8; EndDatum in I9  ##Erst runter dann rechts eingeben
If InStr(1, fn(i), ".") = 3 Then
Tag = CDate(Left(fn(i), 10))
If Tag >= "01.01.2000" And Tag 

Gruß
Manuela
Anzeige
AW: ...Und innerhalb von Pgmm ist das noch nicht ...
23.01.2018 16:02:22
Pgmm
Das war der falsche Code. Hier ist der richtige:
Sub Fail_zählen_Zeitraum()
'Ab Version 2.6 die zählung über cmd, geht viel schneller
Dim Tag As Date
sPath = [U3] & [I7]
fn = Filter(Split(CreateObject("wscript.shell").exec _
("cmd /c Dir """ & sPath & "\*.txt").stdout.readall, vbCrLf), "", False)
For i = 3 To UBound(fn)
'Anfangsdatum: I8; EndDatum in I9  ##Erst runter dann rechts eingeben
If InStr(1, fn(i), ".") = 3 Then
Tag = CDate(Left(fn(i), 10))
If Tag >= Cells(8, 9) And Tag 

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige