Hallo Leute,
ich möchte den Arbeitsprozess in einer Excel-Datei so weit wie möglich automatisieren und ich denke, ein VBA-Code könnte mir da einiges an Arbeit ersparen.
Ausgangslage:
Ich habe zwei Dateien A und Z. Die Werte in der Datei A (Tab 1) werden stets gepflegt, neu hinzugekommene Aufträge werden dabei immer mit "new" in der Spalte Z markiert.
Beispiel: 10. Arbeitstag: alle vorherigen Auftrage (bis zum 9. Arbeitstag) stehen nun auf "existing" und die Aufträge, die am 10. Tag eingegangen sind, erhalten den Wert "new". Am 11. Arbeitstag wird der Status der Aufträge vom 10. Tag von "new" auf "existing" gestellt und die Aufträge vom 11. Arbeitstag erhalten "new". Datei A ist eine fortlaufende Datei und die neuen Aufträge werden immer unten angefügt.
Nun muss ich jeden Tag die Aufträge die mit "new" gekennzeichnet sind, in die Datei Z, Tab 1| Grunddaten manuell via Wertekopie einfügen. Datei Z ist auch eine fortlaufende Datei und die Werte werden immer an das untere Ende der Tabelle angefügt.
Meine Überlegungen waren bis jetzt, dass ein Makro diesen Kopiervorgang übernehmen könnte. Das Makro muss allerdings in der Datei A dynamisch die erste Zeile erkennen, in der in der Spalte T ein "new" steht und ab dieser Zeile alls nach unten hin markieren und kopieren (Wichtig: Bis ca. T125000 sind alle Aufträge auf existing!). Genauso muss das Makro in der Datei Z dynamisch die erste Zeile erkennen, in der kein Wert steht, damit die neuen Aufträge forlaufend angefügt werden konnen. Das ganze durch eine uneinheitliche Spaltenstruktur der beiden Excel-Dateien erschwert, zB Spalte W in Datei A muss in die Spalte B in Datei Z.
Anbei habe ich mal den VBA-Recorder mitlaufen lassen. Dabei waren beide Mappen geöffnet
Sub Werte_kopieren()
'Kopiervorgang für Spalte W
Windows("DateiA.xlsb").Activate 'gehe in DateiA, Tab 1
Range("W133888").Select 'Kopiere Spalte W133888 bis ans untere Ende. Bei W133888 soll die Zeilenangabe dynamisch sein
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Datei Z.xlsb").Activate 'gehe in DateiZ Tab 1 Grunddaten
Range("B14241").Select 'Füge die Werte via Wertekopie ein. Bei B14241 soll die Zeilenangabe dynamisch sein
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Nun wird der Vorgang nochmal für die Spalte H wiederholt
Windows("Datei A.xlsb").Activate
Range("H133888").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("Datei Z.xlsb").Activate
Range("I14241").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("I14242").Select
End Sub
Da ich leider relativ unerfahren mit VBA-Codes bin, wäre ich über Tipps und Anregungen sehr dankbar!
Viele Grüße
Fabi
|