Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1868to1872
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

Spalteninhalte Aus verschiedenen Dateien

Spalteninhalte Aus verschiedenen Dateien
08.02.2022 12:46:38
Janett
Hallo Liebes Forum,
bisher kopiere ich mit untenstehendem Code den Inhalt aus Spalten aus 4 Arbeitsblättern (in einer Datei) in eine Andere Datei.
Nun hätte ich das Ganze gerne mittels Progressbar umgesetzt.
Ist das Vorhaben möglich?
Bitte um Hilfestellung.

im Wb As Workbook
Dim Dest As Range
Dim Fname As String
Dim strJahr As String
Dim strPfad As String
strPfad = "R:\111651\DEGEWO\Kontrollen\Vertragskontrollen\"
strJahr = Worksheets("Tabelle1").Cells(2, 8).Value
Fname = strPfad & "Vertragskontrollen" & strJahr & ".xlsx"
Application.ScreenUpdating = False
Set Dest = Range("A1")
Set Dest1 = Range("B1")
Set Dest2 = Range("C1")
Set Dest3 = Range("D1")
Set Wb = Workbooks.Open(Fname, False, True)
Wb.Worksheets("Januar - März").Range("D1:D500").Copy Dest
Wb.Worksheets("April - Juni").Range("D1:D500").Copy Dest1
Wb.Worksheets("Juli - September").Range("D1:D500").Copy Dest2
Wb.Worksheets("Oktober - Dezember").Range("D1:D500").Copy Dest3
Wb.Close
Call Makro2
Application.ScreenUpdating = True
End Sub
Liebe Grüße Janett

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalteninhalte Aus verschiedenen Dateien
08.02.2022 17:39:34
Yal
Hallo Janett,
? Verstehe nicht ? Progressbar haben mit Kopieren nicht zu tun ?
VG
Yal
AW: Spalteninhalte Aus verschiedenen Dateien
08.02.2022 18:27:00
Janett
Hallo Yal,
danke für deine Antwort.
Da es sich um eine große Menge Daten handeln wird dauert der Prozess des Kopierens einige Minuten.
Daher möchte ich eine Fortschritsanzeige von 0 -100% haben.
Dann weiß der Anwender wann der Vorgang abgeschlossen ist und kann in der Zwischenzeit andere Dinge erledigen.
Das ganze sollte aussehen wie in dieser Datei https://www.herber.de/bbs/user/45577.xls (Beispiel 1).
Ich habe keinen Schimmer was ich anstellen muss um es bei mir ähnlich aussehen zu lassen.
LG Janett
Anzeige
AW: Spalteninhalte Aus verschiedenen Dateien
09.02.2022 12:22:41
Piet
Hallo Janet
mit Progressbar habe ich noch nie gearbeitet und somit keine Erfahrung damit. Aus Neugier habe ich e! einmal probiert, aber mit dem Ergebnis bin ich nicht zufrieden. Das scheint garnicht so einfach zu sein, wie ich feststellen musste!
Das Beispiel, das ich dir mal auf deinen Code umgeschrieben habe, kann keine Prozente anzeigen, nur den Zeitraum der gerade kopiert wird! Und zu meiner Verblüffung gibt die UserForm keine Anzeige heraus, wenn ich die MsgBox "fertig" weglasse! Starte ich sie erfolgt die Datums Anzeige. Vielleicht hat Yal noch eine Idee wie man das automatisieren kann, falls dir diese Lösung gefällt. Mehr kann ich nicht tun! Hier ist mein Wissen am Ende!
https://www.herber.de/bbs/user/151015.xlsm
@Yal Hallo Kollege, wie du in den Modulen sehen kannst habe ich mehrere Internet Varianten heruntergeladen wie man eine MsgBox für nur 1 Sekunde über Shell anzeigen kann. Auf meinem Rechner funktioniert keine einzige Variante, egal aus welchem Forum. Woran liegt das? Da endet mein Wissen!
mfg Piet
Anzeige
AW: Spalteninhalte Aus verschiedenen Dateien
09.02.2022 14:27:54
Yal
Moin,
habe gerade keine Zeit, Piets Werk zu begutachten. Heute abend vielleicht.
Mit Statusbar kannst unten links zeigen, was gerade passiert. Am Ende mit "= False" wird wieder Excel die Hoheit auf dem Statusbar gegeben.

Sub Kopieren()
Dim Wb As Workbook
Dim Fname As String
Dim strJahr As String
Dim Quelle As String
Const strPfad = "R:\111651\DEGEWO\Kontrollen\Vertragskontrollen\"
Const cTabListe = "Januar - März;April - Juni;Juli - September;Oktober - Dezember"
strJahr = Worksheets("Tabelle1").Cells(2, 8).Value
Fname = "Vertragskontrollen" & strJahr & ".xlsx"
Application.ScreenUpdating = False
Application.StatusBar = "Datei " & Fname & " öffnen..."
Set Wb = Workbooks.Open(strPfad & Fname, False, True)
For i = 1 To 4
Quelle = Split(cTabListe, ";")(i - 1)
Application.StatusBar = "Kopieren von " & Quelle
Wb.Worksheets(Quelle).Range("D1:D500").Copy Cells(1, i)
Next i
Application.StatusBar = "Schliessen von " & Fname
Wb.Close
Application.StatusBar = False
Call Makro2
Application.ScreenUpdating = True
End Sub
VG
Yal
Anzeige
AW: gute Idee! noch enfacher... oWt
09.02.2022 16:27:46
Piet
...
Es kommt mir gerade der Gedanke..
09.02.2022 20:27:54
Yal
Hallo Janett,
vielleicht hätte ich ergänzen müssen: ein Progressbar ergibt hauptsächlich Sinn, wenn die Aufgabe eine quantifizierbare Menge an Arbeit und der Fortschritt ist während der Bearbeitung messbar: ich muss 10.000 Zeilen in einer For-Schleife verarbeiten, also jede 50 Zeilen ist ein halben Prozent Fortschritt.
Hier hast Du 4 Kopierereien, die jede nur "en block" gemacht werden kann, spricht mehr als 0, 25, 50, 75, 100 ist nicht ermittelbar, da den Fortschritt innerhalb der Kopie nicht gelesen werden kann. Das Öffnen und Schliessen kommt hinzu, es ist aber nicht zu ermitteln, ob diese Aufgaben je 5, 10 oder 20% der Zeit beansprechen.
Aber diese Kopie sollten auch nicht das Element, was das Dauer der Verarbeitung verursacht. Eventuell das Öffnen+Schliessen der Datei.
Vielmehr hast Du am Ende eine "Call Makro2". Da ist nicht sichtbar, was da passiert.
VG
Yal
Anzeige
AW: Es kommt mir gerade der Gedanke..
09.02.2022 20:50:22
Janett
Hallo Jungs,
vielen Dank für eure Mühe.
@Yal das Macro setzt nur eine Bedingte Formatierung (Doppelte markieren)
Wenn ich das jetzt richtig verstanden habe, müsste man mittels Schleife jede Zeile einzeln kopieren/einfügen um eine ordentliche Anzeige zu bekommen. Das ist natürlich blödsinn und würde noch viel mehr Zeit in Anspruch nehmen.
Dann macht es doch mehr Sinn einfach eine MSGBox aufploppen zu lassen wenn der Vorgang abgeschlossen ist.
LG Janett
AW: Es kommt mir gerade der Gedanke..
09.02.2022 20:50:34
Janett
Hallo Jungs,
vielen Dank für eure Mühe.
@Yal das Macro setzt nur eine Bedingte Formatierung (Doppelte markieren)
Wenn ich das jetzt richtig verstanden habe, müsste man mittels Schleife jede Zeile einzeln kopieren/einfügen um eine ordentliche Anzeige zu bekommen. Das ist natürlich blödsinn und würde noch viel mehr Zeit in Anspruch nehmen.
Dann macht es doch mehr Sinn einfach eine MSGBox aufploppen zu lassen wenn der Vorgang abgeschlossen ist.
LG Janett
Anzeige
AW: Es kommt mir gerade der Gedanke..
09.02.2022 21:29:10
Yal
Hallo Janett,
ich habe nicht gesagt, dass Du musst, nur dass eine richtige Fortschrittanzeige in dem Fall sehr sprungartig wäre, und bei der Kurze der Zeit wenig relevant ist. Ziel ist natürlich eine sinnvolle, optimierte Verarbeitung zu machen und nicht schöne Schnorkelei aufzubauen.
Die bedingte Formatierung ist nicht nur das Einfügen der Formel, sondern auch deren Berechnung, was in dem Fall nicht ganz ohne sein soll.
Mit einem Timer kannst Du messen, wieviel Zeit pro Aufgabe verwendet wird:

Sub Kopieren()
Dim Wb As Workbook
Dim Fname As String
Dim strJahr As String
Dim Quelle As String
Dim T
Const strPfad = "R:\111651\DEGEWO\Kontrollen\Vertragskontrollen\"
strJahr = Worksheets("Tabelle1").Cells(2, 8).Value
Fname = "Vertragskontrollen" & strJahr & ".xlsx"
Application.ScreenUpdating = False
T = Timer
Set Wb = Workbooks.Open(strPfad & Fname, False, True)
Debug.Print "Nach Workbook öffnen: " & Timer - T: T = Timer
For i = 1 To 10 Step 3
Quelle = Format("1." & i, "MMMM") & " - " & Format("1." & i + 2, "MMMM")
Wb.Worksheets(Quelle).Range("D1:D500").Copy Cells(1, i)
Debug.Print "Nach Kopieren " & i; ": " & Timer - T: T = Timer
Next i
Wb.Close
Debug.Print "Nach Workbook schliessen: " & Timer - T: T = Timer
Call Makro2
Debug.Print "Nach bed. Format setzen: " & Timer - T: T = Timer
MsgBoX "Verarbeitung abgeschlossen."
Application.ScreenUpdating = True
End Sub
VG
Yal
Anzeige
AW: Spalteninhalte Aus verschiedenen Dateien
10.02.2022 14:09:13
Piet
Hallo ihr beiden
die Idee mit einer MsgBox aufpoppen kam mir auch, weil mein Versuch mit der Fortschrittanzeige nicht funktionierte. meine Frage an euch:
Wäre es sinnvoll nach jedem Kopiervorgang für 2-3 Sekunden eine MsgBox aufpoppen zu lassen die anzeigt welche Monate fertig sind, und sich dann automatisch schliesst.? Dieses automatische Schliessen klappt auf meinem PC nicht, egal welche Internet Variante (Shell) ich probiert habe! Auch drei Herber Archiv Beispiele klappen nicht! Ist das vielleicht eine Frage der PC Einstellung? Wenn ja was muss man da aktivieren? Auf dem Gebiet fehlt mir jede Erfahrung!
mfg Piet
Anzeige
AW: Spalteninhalte Aus verschiedenen Dateien
10.02.2022 14:36:00
Yal
Hallo Piet,
wird auch nicht funktionieren, weil ein MsgBox ein User-Interaktion darstellt, die eine User-Aktion erfordert. Alles steht still, bis der User reagiert hat.
Du könntest ein Userform gestalten, das sich nach 2 Sek. selbst schliesst. Ziemlich aufwändig für den Bedarf, aber wurde gehen.
VG
Yal
AW: Spalteninhalte Aus verschiedenen Dateien
11.02.2022 10:59:55
Piet
Hallo
dann ist die StatusBar Anzeige vorzuziehen, das ist einfacher zu programmieren. Man kann die fertigen Monate anzeigen, oder welche gerade kopiert werden!
mfg Piet

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige