01.03.2022, 15:22
Hallo zusammen,
ich bin der Neue. Ich konnte schon durchs Mitlesen hier im Forum einige Probleme, die bei mir aufgetreten sind lösen, jedoch komme ich nun leider nicht weiter und hoffe, dass mir einer von Euch weiterhelfen kann.
Folgendes Problem:
Ich habe mir drei verschiedene Excel - Dateien auf gebaut, um drei verschiedene Projekte besser controllen zu können. Ende jeden Monats möchte ich meine drei Dateien mit den aktuellen Zahlen aus dem SAP "füttern". Die Daten aus dem SAP exportiere ich ebenfalls als Excel Tabelle (xls), die immer gleich aufgebaut sind z.B. Spalte A = Jahr, Spalte B = Monat, usw..
Für mein erstes Projekt habe ich jeweils eine Input - Datei pro Monat, was wunderbar funktioniert, für das zweite jeweils 3 Input - Dateien pro Monat, was ebenfalls wunderbar funktioniert, und für das dritte, monatlich 5 Input - Dateien, wo ich momentan etwas am hängen bin.
Generell ist der Ablauf immer der Selbe: Ich ziehe mir die Input - Dateien aus dem SAP und öffne sie im Anschluss. Dann führe ich in meiner Hauptdatei ein Makro aus, welches jede Input - Datei einmal formatiert (löschen von leeren Spalten und Zeilen) anschließend kopiert und dann in meiner Hauptdatei in meinem Input - Blatt einfügt und dort weiterverarbeitet wird. Die Dateinamen der Input - Dateien habe ich dabei in einer Zelle in meiner Hauptdatei stehen. Mein Makro speichert die Namen der Input - Dateien in Variablen und gibt diese dann an workbooks().Activate, womit ich dann zwischen meinen einzelnen Dateien hin und herspringe. Wie eingangs erwähnt, funktioniert dies bei den ersten zwei Dateien für die anderen beiden Projekte ohne Probleme. Bei dieser Mappe scheint es jedoch leider oft so, als ob workbooks().Activate nicht funktionieren würde. Ich erhalte keinerlei Fehlermeldung, jedoch ist nachdem Aufrufen von workbooks().Activate die aktive Mappe meistens immer noch meine Hauptdatei, was wiederum dann meine Hauptdatei zerschießt, da die anschließende Formatierung dann nicht in der Input - Datei durchgeführt wird, sondern in der Hauptdatei. Besonders komisch ist, dass der workbooks().Activate manchmal zu funktionieren scheint, aber dann bei zweiten oder dritten ausführen auf einmal nicht mehr. Was ja eigentlich nicht sein kann?!
Anbei wie mein Code aufgebaut ist:
Nachdem dies nicht funktioniert hat, habe ich versucht, den Fehler über MsgBox ActiveWorksheet.Name zu finden. Hierbei ist mir, wie erwähnt, aufgefallen, dass sich das aktive Worksheet nach Worksheet().Activate nicht immer ändert. Auch habe ich bereits versucht eine Lösung zu ergooglen, bin aber leider nicht fündig geworden. Das einzige, was ich online gefunden hab, ist dass es evtl. an meiner Office Version (Office 2013, 32 Bit) liegen könnte, dass Workbooks().Activate nicht richtig funktioniert. Ebenfalls habe ich den Aufbau auch mit Windows().Activate probiert.
Hat jemand eine Idee wie ich mein Problem beheben kann? Oder ggfs. ein Workaround?
Bitte habt etwas Nachsicht mit mir. Meine VBA Kenntnisse sind mehr als ausbaufähig. Sicherlich kann man den Code deutlich eleganter gestalten.
ich bin der Neue. Ich konnte schon durchs Mitlesen hier im Forum einige Probleme, die bei mir aufgetreten sind lösen, jedoch komme ich nun leider nicht weiter und hoffe, dass mir einer von Euch weiterhelfen kann.
Folgendes Problem:
Ich habe mir drei verschiedene Excel - Dateien auf gebaut, um drei verschiedene Projekte besser controllen zu können. Ende jeden Monats möchte ich meine drei Dateien mit den aktuellen Zahlen aus dem SAP "füttern". Die Daten aus dem SAP exportiere ich ebenfalls als Excel Tabelle (xls), die immer gleich aufgebaut sind z.B. Spalte A = Jahr, Spalte B = Monat, usw..
Für mein erstes Projekt habe ich jeweils eine Input - Datei pro Monat, was wunderbar funktioniert, für das zweite jeweils 3 Input - Dateien pro Monat, was ebenfalls wunderbar funktioniert, und für das dritte, monatlich 5 Input - Dateien, wo ich momentan etwas am hängen bin.
Generell ist der Ablauf immer der Selbe: Ich ziehe mir die Input - Dateien aus dem SAP und öffne sie im Anschluss. Dann führe ich in meiner Hauptdatei ein Makro aus, welches jede Input - Datei einmal formatiert (löschen von leeren Spalten und Zeilen) anschließend kopiert und dann in meiner Hauptdatei in meinem Input - Blatt einfügt und dort weiterverarbeitet wird. Die Dateinamen der Input - Dateien habe ich dabei in einer Zelle in meiner Hauptdatei stehen. Mein Makro speichert die Namen der Input - Dateien in Variablen und gibt diese dann an workbooks().Activate, womit ich dann zwischen meinen einzelnen Dateien hin und herspringe. Wie eingangs erwähnt, funktioniert dies bei den ersten zwei Dateien für die anderen beiden Projekte ohne Probleme. Bei dieser Mappe scheint es jedoch leider oft so, als ob workbooks().Activate nicht funktionieren würde. Ich erhalte keinerlei Fehlermeldung, jedoch ist nachdem Aufrufen von workbooks().Activate die aktive Mappe meistens immer noch meine Hauptdatei, was wiederum dann meine Hauptdatei zerschießt, da die anschließende Formatierung dann nicht in der Input - Datei durchgeführt wird, sondern in der Hauptdatei. Besonders komisch ist, dass der workbooks().Activate manchmal zu funktionieren scheint, aber dann bei zweiten oder dritten ausführen auf einmal nicht mehr. Was ja eigentlich nicht sein kann?!
Anbei wie mein Code aufgebaut ist:
Code:
Application.ScreenUpdating = True
wb = ActiveWorkbook.Name
Var1 = Range("A1")
Var2 = Range("A2")
Var3 = Range("A3")
...
Workbooks(Var1).Activate
Formatierung + Kopieren
Workbooks(wb).Activate
Einfügen
Workbooks(Var2).Activate
Formatieren + Kopieren
Workbooks(wb).Activate
Einfügen
usw
Nachdem dies nicht funktioniert hat, habe ich versucht, den Fehler über MsgBox ActiveWorksheet.Name zu finden. Hierbei ist mir, wie erwähnt, aufgefallen, dass sich das aktive Worksheet nach Worksheet().Activate nicht immer ändert. Auch habe ich bereits versucht eine Lösung zu ergooglen, bin aber leider nicht fündig geworden. Das einzige, was ich online gefunden hab, ist dass es evtl. an meiner Office Version (Office 2013, 32 Bit) liegen könnte, dass Workbooks().Activate nicht richtig funktioniert. Ebenfalls habe ich den Aufbau auch mit Windows().Activate probiert.
Hat jemand eine Idee wie ich mein Problem beheben kann? Oder ggfs. ein Workaround?
Bitte habt etwas Nachsicht mit mir. Meine VBA Kenntnisse sind mehr als ausbaufähig. Sicherlich kann man den Code deutlich eleganter gestalten.