Clever-Excel-Forum

Normale Version: Inhalt aus mehreren Arbeitsmappen in einzelner Mappe konsolidieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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:

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.
Hallo,

bei der Zuweisung der Dateinamen solltest Du immer komplett referenzieren.
Also statt
Var1 = Range("A1")
dann

wb = ThisWorkbook.Name
Var1 = Workbooks(wb).Worksheets("KeineAhnung").Range("A1").Value


Gruß Uwe
Hallo Uwe, 

danke für Deine schnelle Antwort und den Tipp.
Werde ich mir für die Zukunft definitiv merken immer komplett zu referenzieren.

Doch leider löst dies mein Problem leider immer noch nicht. 
In den Variablen wird im Debuger der korrekte Dateiname angezeigt, doch die Mappe wird nur für eine der 5 Dateien aktiviert.
Die Dateinamen in der Zellen in der Hauptmappe sind natürlich gleich den der Input - Mappen. Hier gibts keinen Tippfehler oder so.

Danke für Eure Hilfe!

Viele Grüße

Chris
Hallo Chris,

ohne Kenntnis des verwendeten Codes ist es mir nicht möglich, etwas dazu zu sagen.

Gruß Uwe
Hallo Uwe,

meine eigentliche Datei kann ich leider nicht zur Verfügung stellen, da sie eingestufte Daten enthält.
Anbei ein Beispiel wie ich vorgegangen bin mit einer beispielhaften Input - Datei. 
Auf meinem privaten Rechner läuft der Beispiel - Code ganz normal ohne Fehler durch und tut was er soll (Office 365).
Auf meinem Dienst - Rechner habe ich die beschriebenen Probleme (Office 2013). Hier wird mir bei den MsgBox Abfragen nicht immer die Input - Mappe genannt, sondern meist die Hauptmappe. So als ob das vorherige Workbooks().Activate keine Funktion gehabt hätte. 

Sorry, dass das ganze etwas schwer zu Rekonstruieren ist. 

Danke nochmals für die Hilfe!

Viele Grüße

Chris
Hallo Chris,

mir geht es wie Dir: es läuft ohne Probleme.
Wäre gut, wenn es mal jemand mit E2013 testen könnte.

Gruß Uwe
Hi Radon,

Du verwendest O365, da drängt sich Power Query für Deine geschilderte Anforderung geradezu auf. Eine sehr gute Anleitung zur Vorgehensweise bei Deinem Problem findest Du hier: Power Query - Parameter steuern Abfragen - Workshop 1.1 - YouTube
Hallo Uwe,

okay, dann liegts zumindest nicht komplett an mir. 
Wie gesagt, ich bin VBA technisch nicht so bewandert, gibt es evtl. eine andere Lösung ohne Workbooks().Activate um den Inhalt der Input Dateien in die Hauptdatei zu kopieren?

Hallo Ralf,

danke für den Tipp! Ich sehe gerade, dass PowerQuery sogar im Software-Katalog vorhanden ist. Ich probiere das definitiv einmal aus!

Viele Grüße

Chris
Hallo Chris,

bie kompletter Referenzierung wie in #2 geschrieben ist ein direkter Zugriff möglich ohne Activate oder Select.

Gruß Uwe
Hallo Uwe,

logisch Blush , damit scheint es wunderbar zu gehen!
Muss ich morgen nochmal weiterprobieren.

Riesen Dank für Deine Hilfe, damit ist mein Problem dann hoffentlich gelöst!

Viele Grüße

Chris
Seiten: 1 2