Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1596to1600
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

Fortschritt Dateienkopieren anzeigen

Fortschritt Dateienkopieren anzeigen
30.12.2017 18:53:16
Ralf
Hallo liebe Forumsleute,
habe eine Bitte um Hilfe.
Nachdem mir als VBA-Anfänger das letzte Mal (meine allererste Frage in diesem Forum) Sigi so gut geholfen hat, vielen Dank nochmal, traue ich mich jetzt ein zweites Mal zu fragen.
Folgende Problemstellung:
Ich möchte mit VBA von einem Server per IP-Adresse, aus einem Ordner mit div. verschiedenen Dateien, mehrere xls-Dateien auf C:/Temp-RL/ rüber kopieren, die ich dann auswerte und bearbeite. Das habe ich auch recht gut hinbekommen. Es müssen 2 Dateitypen mit folgenden Dateinamen (mit Platzhaltern) kopiert werden: 20*.xls und Abrechnung*.xls
Da immer eine unterschiedliche Anzahl dieser Dateien im Ordner sind und kopiert werden sollen, zwischen 1 und ca. 300, die Datenübertragung per VPN-Tunnelung nicht die schnellste ist, hätte ich gerne als eine Art Fortschrittsbalken z.B. per MsgBox "Datei 1 von 208 kopiert - Datei 2 von 208 kopiert" usw. fortlaufend während des Kopierens angezeigt bekommen.
Geht das? ohne großen Aufwand?
Nachfolgend ein Ausschnitt dessen, was ich bisher zusammengestrickt habe - wie gesagt, bin VBA-Anfänger, deshalb ist mein "Kopierprogramm" sicherlich sehr umständlich geschrieben - das Kopieren funktioniert aber problemlos.
Also, geht das mit der "Vortschritts-MsgBox"?
Vielen Dank im Voraus!
Ralf
If Dir(ProjOrdner & "\20*.xls") "" Then
Dim Quelle As String
Quelle = ProjOrdner & "\20*.xls"
Dim fs As Object
Dim I As Integer
Debug.Print Quelle
Set fs = CreateObject("Scripting.FileSystemObject")
fs.copyFile Quelle, ZielOrdner
Set fs = Nothing
End If
If Dir(ProjOrdner & "\Abrechnung*.xls") "" Then
Quelle = ProjOrdner & "\Abrechnung*.xls"
Debug.Print Quelle
Set fs = CreateObject("Scripting.FileSystemObject")
fs.copyFile Quelle, ZielOrdner
Set fs = Nothing
End If

39
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fortschritt Dateienkopieren anzeigen
30.12.2017 19:25:08
onur
Es gibt Userforms mit Fortschrittsbalken, aber dafür muss der Gesamtaufwand vorher feststellen, d.h. du musst zuvor feststellen, wieviele Dateien es werden.
AW: Fortschritt Dateienkopieren anzeigen
30.12.2017 20:23:25
Ralf
Danke für deine Antwort onur,
habe ich mir schon fasst gedacht, dass zunächst die Anzahl der zu kopierenden Dateien ermittelt werden muss - hierfür sind meine VBA-Kenntnisse aber leider ungenügend.
Und dann noch per Userform, da werde ich wohl leider aufgeben müssen.
Trotzdem nochmals Danke!
Ralf
AW: Flinte ins Korn?
31.12.2017 11:02:23
JoWE
Hallo Ralf,
nicht aufgeben! Hier ein kurzer Code der die Anzahl der Dateien in einen bestimmten Ordner ausgibt.
Gruß
Jochen
Anzeige
AW: Flinte ins Korn? :-) mit Bsp.
31.12.2017 11:04:16
JoWE
Hallo Ralf,
nicht aufgeben! Hier ein kurzer Code der die Anzahl der Dateien in einen bestimmten Ordner ausgibt.
Sub x()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
MsgBox fso.GetFolder("C:\temp").Files.Count
Set fso = Nothing
End Sub

Gruß
Jochen
AW: Flinte ins Korn?
31.12.2017 11:05:06
Hajo_Zi
Hallo Jochen,
der Code ist wirklich sehr kurz. Da 0 Zeilen. Ich kann damit nicht die Anzahl der Dateien feststellen.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben,
mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
Anzeige
Und wieder ein Beitrag der....
31.12.2017 11:41:17
Werner
....so intelligent ist wie zehn Meter Feldweg.
Gruß Werner
AW: Und wieder ein Beitrag der....
31.12.2017 11:52:41
Ralf
Hallo Jochen und Werner,
:-( danke für eure "hilfreichen" Kommentare zu meiner Frage.
Gruß
Ralf
AW: Und wieder ein Beitrag der....
31.12.2017 12:05:49
JoWE
Hallo Ralf,
hier Deine Worte: "habe ich mir schon fasst gedacht, dass zunächst die Anzahl der zu kopierenden Dateien ermittelt werden muss - hierfür sind meine VBA-Kenntnisse aber leider ungenügend."
Genau dafür lieferte ich einen Code.
Schade dass Du so darauf reagierst. Trotzdem einen guten Rutsch.
Gruß
Jochen
AW: Und wieder ein Beitrag der....
31.12.2017 12:44:00
Ralf
Hallo Jochen,
entschuldige bitte meine letzten Bemerkungen, hat mich nur aufgeregt, dass außer deiner Antwort mit dem Code nur noch "seltsame" Kommentare gekommen sind.
Übrigens funktioniert dein Code zwar, aber, wie anfänglich beschrieben:
Das Quellverzeichnis beinhaltet die verschiedensten Dateien, u.a. txt, pdf, doc und diverse xls-Dateien.
Hieraus möchte ich nur die beiden Excel-Datei-Typen "20*.xls" und "Abrechnung*.xls" kopieren und hiervon benötige ich die Anzahl (Summe der beiden Excel-Typen).
Es hilft mir deshalb leider nichts, wenn ich vor dem Kopieren die Gesamtanzahl aller im Quellordner vorhandenen Dateien ermittle.
Gruß
und dir auch ein gutes neues Jahr
Ralf
Anzeige
AW: Und wieder ein Beitrag der....
31.12.2017 15:00:29
Werner
Hallo Ralf,
dann von mir auch noch ein konstruktiver Beitrag.
Teste mal:
Option Explicit
Sub Anzahl_Dateien_im_Ordner()
Dim oFSO As Object, oFolder As Object, oFile As Object, loAnzahl As Long
Const strPfad As String = "D:\Temp" 'Pfad anpassen
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(strPfad)
For Each oFile In oFolder.Files
If oFile.Name Like "*20*.xls" _
Or oFile.Name Like "Abrechnung*.xls" Then
loAnzahl = loAnzahl + 1
End If
Next oFile
MsgBox "Anzahl Dateien:  " & loAnzahl
Set oFile = Nothing: Set oFolder = Nothing: Set oFSO = Nothing
End Sub
Bist du sicher, dass das .xls Dateien sind und nicht .xlsx ?
Gruß Werner
Anzeige
AW: Und wieder ein Beitrag der....
31.12.2017 21:53:15
Ralf
Hi Werner,
Danke!
Komme aber erst nächstes Jahr dazu, deinen Code zu testen, melde mich dann.
Ja, alles xls, da Zwischenschritte über ein altes Programm gelaufen sind. Könnte die Dateien nach dem Kopieren allerdings auch in xlsx-Dateien umkopieren, würde das was positives bringen?
Herzlicher Gruß aus Augsburg
Ralf
AW: Und wieder ein Beitrag der....
01.01.2018 17:55:22
Ralf
Ein gutes neues Jahr, Werner!
Habe deinen Code ausprobiert: Funktioniert.
Ich musste nur den Pfad von Konstante auf Variable umstellen, auch das ging - kann das aus deiner Sicht irgendwie problematisch sein oder werden?
Der beigefügte Link verweist auf die von mir in Arbeit befindliche Datei incl. deinem Code.
Falls du Zeit und Lust dazu hast, kannst du dir ja 'mal den ersten Teil meines "VBA-Erstlingswerk" anschauen.

Die Datei https://www.herber.de/bbs/user/118602.xlsm wurde aus Datenschutzgründen gelöscht


Wahrscheinlich sieht es in deinen Profiaugen furchtbar aus, funktioniert aber.
Eine Frage noch zum Kopieren: Ich möchte ja aus dem Quellverzeichnis die Dateitypen "20*.xls" und "Abrechnung*.xls" kopieren, habe dafür zweimal eine If-Endif-Anweisung geschrieben: Geht das auch zusammengefasst und somit kürzer?
Nochmals herzlichen Dank
Ralf
Anzeige
AW: Und wieder ein Beitrag der....
31.12.2017 12:31:46
Werner
Hallo Ralf,
einen Lösungsansatz hast du von Jochen und mein Beitrag war nicht an dich gerichtet.
Guten Rutsch.
Gruß Werner
AW: Flinte ins Korn?
31.12.2017 12:02:49
JoWE
Hajo,
Dir wünsche ich für 2018 und darüber hinaus mehr Empathie und etwas mehr Freundlichkeit.
Ach ja, und danke für den überaus treffenden Hinweis.
Gruß
Jochen
AW: Fortschritt Dateienkopieren anzeigen
31.12.2017 18:20:11
onur
Wo du jetzt einen Code zur Feststellung des Gesamtaufwandes hast, poste mal die datei, dann kann ich dir den Fortschrittsbalken einbauen.
AW: Fortschritt Dateienkopieren anzeigen
31.12.2017 21:46:19
Ralf
Hi onur,
danke für deine Bereitschaft, dir meine Datei anzuschauen und den Fortschrittsbalken einzubauen.
Mache das mit dem Posten aber erst nächstes Jahr ;-), bei mir läuft zur Zeit Sylvester!
Gruß
Ralf
Anzeige
AW: Fortschritt Dateienkopieren anzeigen
01.01.2018 22:10:58
Ralf
Ein gutes neues Jahr, onur!
Hier die Datei, übrigens mein VBA-Erstlingswerk, könnte sicherlich professioneller geschrieben werden, funktioniert aber, Verbesserungen gerne gesehen:

Die Datei https://www.herber.de/bbs/user/118602.xlsm wurde aus Datenschutzgründen gelöscht


Nochmals vielen Dank für deine Hilfe
Ralf
AW: Fortschritt Dateienkopieren anzeigen
02.01.2018 18:31:41
onur
Danke, dir auch!
Bist du sicher, dass dieser Code ALLE Dateien kopiert?
Ich sehe auf Anhieb keinerlei Schleife im "Kopieren"-Teil des Codes.
AW: Fortschritt Dateienkopieren anzeigen
02.01.2018 20:40:30
Ralf
Hallo onur,
ja, es werden alle Dateien kopiert, habe es mehrmals mit verschiedenen Quellordnern getestet und dann manuell verglichen.
Jede der beiden If - End If Anweisungen kopiert alle Dateien des entsprechenden Dateityps, erst alle "20*.xls" dann alle "Abrechnung*.xls" - den Code habe ich irgendwo aus einem Forum "gestohlen". Per Schleife gäbe es sicher einen saubereren und schnelleren Code - aber ich bin froh, dass es auch so funktioniert. Wenn du eine bessere Lösung weißt, immer her damit, bin für jeden Geschwindigkeitszuwachs dankbar.
Der eingefügte "Anzahl Dateien im Ordner - Code" von Werner bringt übrigens das gleiche Ergebnis.
Gruß
Ralf
Anzeige
AW: Fortschritt Dateienkopieren anzeigen
02.01.2018 20:47:02
onur
Da ich keine Möglichkeit habe, den Code zu testen (ohne die dateien und verzeichnisse zu erstellen),muss ich mich darauf verlassen, was ich auf Anhieb sehe.
Wenn der Code funktioniert, haben wir aber ein Problem, da der "Fortschrittsbalken" so was wie eine Schleife braucht, um zu wissen, wieviel schon abgearbeitet ist.
Ich schaue mal, vielleicht kann man den Code von Werner etwas umstricken und damit alles kopieren.
AW: Fortschritt Dateienkopieren anzeigen
02.01.2018 21:01:11
onur
Probiere mal, ob die dateien jetzt auch kopiert werden:
https://www.herber.de/bbs/user/118632.xlsm
Anzeige
AW: Fortschritt Dateienkopieren anzeigen
02.01.2018 22:28:29
Ralf
n' Abend onur,
kopiert werden nur die "20*.xls"-Dateien, die "Abrechnung*.xls" leider nicht.
Gruß
Ralf
AW: Fortschritt Dateienkopieren anzeigen
02.01.2018 23:00:13
Ralf
Melde mich morgen: Schlafenszeit!
Geh auch ins Bett, onur ;-)
AW: Fortschritt Dateienkopieren anzeigen
03.01.2018 07:01:00
Ralf
Hallo onur,
alles wird gut!
Dein neuer Code kopiert alle Dateien korrekt.
Gruß
Ralf
AW: Fortschritt Dateienkopieren anzeigen
03.01.2018 07:02:18
onur
Rest wenn ich wieder zu hause bin.
AW: Fortschritt Dateienkopieren anzeigen
03.01.2018 18:27:10
Ralf
Hallo onur,
zunächst die gute Nachricht: Es funktioniert!
Nun die nicht so gute:
Wie anfänglich erwähnt, läuft der Datentransfer (Homeoffice)per gemächlicher VPN-Tunnelung.
Wenn ich im Büro direkt im Netz bin, läuft es sicher besser.
Bei soeben getestetem Kopieren von 36 Dateien friert Excel die ersten 2 Minuten ein: weißes Excel-Fenster mit: "Excel-Keine Rückmeldung".
Dann erscheint dein Fortschrittsbalken und krabbelt langsam unter Anzeige der Prozente hoch - dauert ewig, gefühlt mind. 5-10Min. - die Zeit muss ich mal stoppen.
Die Excel-Dateien sind jeweils nur ca. 35KB groß!
Aber dann ist alles korrekt rüberkopiert.
Ich vermute mal, das wird, ob mit oder ohne Fortschrittsbalken, immer so lange dauern, da die Transfergeschwindigkeit einfach zu gering ist.
Aber dafür wollte ich ja eigentlich auch den Fortschrittsbalken, damit sich während des langen Kopiervorgangs was tut.
Also, dein Code funktioniert wohl einwandfrei - die Datenverbindung ist besch...eiden!
Herzlichen Dank!
Ralf
Anzeige
AW: Fortschritt Dateienkopieren anzeigen
03.01.2018 18:35:38
onur
Hi Ralf,
Wie schnell waren denn die letzten Versionen (die letzte ohne ProgressBar und die davor mit dem ursprüngliche Kopiercode)?
Wenn die genauso langsam sind, kann man wohl kaum etwas machen.
Wahrscheinlich wird in den ersten 2 min. die Anzahl der zu kopierenden Dateien festgestellt.
Gruß
Onur
AW: Fortschritt Dateienkopieren anzeigen
03.01.2018 19:12:14
Ralf
Hallo onur,
so richtig getestet habe ich das noch nicht, da das Kopieren ja nur der Anfang des weitern Programmablaufs ist. Habe bisher nur mit dem Quell-Testverzeichnis auf D: getestet, nicht mit den Dateien auf dem Server.
Werde ich aber Morgen mal vergleichen.
Bis dann!
Ralf
AW: Fortschritt Dateienkopieren anzeigen
03.01.2018 18:50:52
onur
Wenn ICH dieses Problem hätte, würde ich folgendes machen:
Auf dem Heimrechner in einem Verzeichnis die gleiche Ziel-Ordnerstruktur wie auf der Arbeit erstellen.
Per Makro die Dateien auf dem Heimwerken speichern statt auf der Arbeit.
Diesen Ordner selbstentpackend zippen, nur diese eine Datei zum Rechner auf der Arbeit schicken und da auspacken.
AW: Fortschritt Dateienkopieren anzeigen
03.01.2018 19:05:53
Ralf
Hallo onur,
tja, ich weiß aber nicht, welche Dateien ich wann brauche. Kann sein, dass sich das von einer Stunde zur anderen ändert. Da ich wechselweise im Büro und zuhause arbeite, lässt sich das bei ca. 200 Ordnern, deren Inhalt sich täglich ändert und die ich bei Bedarf benötige, schlecht steuern.
Gruß
Ralf
AW: Fortschritt Dateienkopieren anzeigen
03.01.2018 19:16:22
onur
Genau das meine ich ja (und nicht SÄMTLICHE Dateien):
Statt z.B. jetzt die 26 Dateien einzeln zu kopieren, mit dem gleichen Makro diese in den "Spiegelordner" auf dem Heimrechner kopieren, dann den kompletten Ordner (inkl Unterordner) zippen, schicken und entpacken.
Beim nächsten mal halt andere Dateien.
AW: Fortschritt Dateienkopieren anzeigen
03.01.2018 19:59:26
Ralf
Hi onur,
zur weiteren Erklärung:
Mein beruflicher Arbeitsplatz, noch 5 Monate bis zur Rente :-), ist in einem Augsburger Büro, eine kleine Zweigniederlassung. Von dort greife ich per Netz auf den Server der Firmenzentrale in Frankfurt zu, dort liegen die Excel-Dateien die von den Frankfurter Kollegen betreut und bearbeitet werden.
Ich arbeite wechselweise tageweise unterschiedlich in dem Augsburger Büro oder zuhause im Homeoffice mit der langsamen VPN-Tunnelungsverbindung zum Frankfurter Daten-Server.
Wenn ich also beispielsweise zwei Tage zuhause arbeite, muss ich auf den Frankfurter Zentralserver zugreifen, da nur dort die aktuellen Daten liegen - und das per langsamer VPN-Tunnelung. Für meine normale Regeltätigkeit mit CAD reicht die Geschwindigkeit, da ich abends die bearbeitete CAD-Datei, meist nur eine, auf den Frankfurter Server überspiele, das dauert nicht so lange.
Mit dem Kopieren der XLS-Dateien scheint das aber wohl geschwindigkeitsmäßig etwas anders zu sein.
Aber wie schon erwähnt, werde ich die Übertragungsgeschwindigkeit mit den verschiedenen VBA-Codes morgen testen.
Gruß
Ralf
AW: Fortschritt Dateienkopieren anzeigen
04.01.2018 07:37:58
Ralf
Hallo onur,
habe gerade mehrere Tests bezüglich der Geschwindigkeit gemacht.
Jedes Mal einen Quellordner mit 36 zu Kopierenden Dateien gewählt.
Ergebnisse:
Mit dem letzten Programm von dir incl. Fortschrittsbalken = 6:10 Min
Hierbei "Einfrieren" von Excel - weißes Excel-Fenster mit "Excel - Keine Rückmeldung"
Auch der Fortschrittsbalken tauchte heute nicht auf.
Nach 6:10 wieder normale Ansicht und alle Dateien waren kopiert.
Mit dem Zähler von Werner ohne deinen Fortschrittsbalken = 5:40 Min.
Der Unterschied kann auch an der VPN-Verbindung liegen, da die Übertragungsgeschwindigkeit von Mal zu mal variiert.
Mit meinem ursprünglichen Code, Kopieren der beiden Dateitypen mit 2 x If - End If : 15 sec.!
Der gravierende Zeitunterschied liegt somit wohl an Werners Dateien-Anzahl-Ermittlung.
Ich gehe aufgrund dieser Erkenntnis somit auf meinen alten Code zurück, dann eben leider ohne Fortschrittsbalken.
Nochmals vielen Dank für deine Bemühungen!
Ralf
Fortschritt Dateienkopieren anzeigen
31.12.2017 14:58:47
Anton
Hallo Ralf,
vielleicht reicht schon, wenn du den Fortschritt in einer Zelle anzeigst?
Etwa so (anstatt Debug.Print Quelle):
    Cells(1,1) = "Kopiere " & Quelle
End If
Cells(1,1) = "Fertig"
End Sub
mfg Anton
AW: Fortschritt Dateienkopieren anzeigen
04.01.2018 16:32:31
Anton
Hallo Ralf,
was zum Testen:
Code:

Sub test()
  Dim ProjOrdner As String    
  Dim ZielOrdner As String    
  Dim datei As String  
  ProjOrdner = "F:\2017\12_Dezember\Mix\"  'anpassen
  ZielOrdner = "C:\Temp\bilder\"  'anpassen
  Range("A4").Font.Color = vbRed
  Range("A4") = "Bitte warten!Kopiere:"
  datei = Dir(ProjOrdner & "*.*")
  Do While datei <> ""  
    If LCase(datei) Like "20*.xls" Or _    
      LCase(datei) Like "abrechnung*.xls" Then  
      Range("A5") = ProjOrdner & "\" & datei  
      FileCopy ProjOrdner & datei, ZielOrdner & datei
    End If  
    datei = Dir
  Loop
  Range("A4").Font.Color = vbGreen
  Range("A4") = "Fertig"
  Range("A5") = ""
End Sub  
 


mfg Anton
AW: Fortschritt Dateienkopieren anzeigen
04.01.2018 17:14:54
Ralf
Hallo Anton,
vielen Dank!
Bin auf dem Sprung und komme wahrscheinlich erst am Wochenende zum Testen.
Melde mich dann aber ganz sicher.
Gruß
Ralf
AW: Fortschritt Dateienkopieren anzeigen
05.01.2018 17:55:46
Ralf
Hallo Anton,
habe deinen Code gerade getestet - läuft problemlos und sehr schnell!
Sehr schön mit der durchlaufenden Anzeige der gerade kopierten Dateien - da sieht man, dass sich was tut - gute Idee!!
Ich hatte ein Verzeichnis auf dem Server mit 36 Dateien ausgewählt, die in geschätzten 4 sec. rüberkopiert waren.
Werde das Morgen 'mal in mein Modul einbauen, sieht jedenfalls besser aus als mein If - End If.
Ein kleiner Schönheitsfehler bei der durchlaufenden Dateianzeige:
Du schreibst:
Range("A5") = ProjOrdner & "/" & Datei
für die korrekte Anzeige muss es aber wohl ohne Schrägstrich geschrieben werden:
Range("A5") = ProjOrdner & "" & Datei
Aber, wie gesagt, nur ein Schönheitsfehler, der bei dem schnellen Durchlauf kaum auffällt.
Dank und Gruß
Ralf

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige