Excel Dateien erzeugen mit VBA

Bild

Betrifft: Excel Dateien erzeugen mit VBA
von: wizard
Geschrieben am: 12.06.2015 09:14:50

Hallo,
ich habe zwei Ordner A und B. Hierin sind Dateien von 1-20 enthalten die eine unterschiedliche Anzahl von Spalten haben. Jede Spalte enthält in der ersten Zeile eine Unternehmenskennummer und in der zweiten Zeile eine Wertpapierkennummer. In Ordern A und B könnten jedoch teilsweise doppelte Daten enthalten sein. Wenn man beide Datensätze zusammenfügt aus Ordern A und B zusammenfügt könnte ist in einer Datei stark vereinfach so aussehen: https://www.herber.de/bbs/user/98158.xlsx
Nun möchte ich für jedes Unternehmen eine Excel Datei erzeugen (Dateiname die Unternehmenskennummer). Die Datei soll alle Spalten enthalten die in den Dateien zu diesem Unternehmen zu finden sind und zudem Duplikate anhand der zweiten Zeile bei den Wertpapierkennummern entfernen (ganze Spalte entfernen). Wie kann ich das in VBA umsetzen? Wäre für ne Hilfe sehr dankbar.
Lg wizard

Bild

Betrifft: AW: Excel Dateien erzeugen mit VBA
von: Klexy
Geschrieben am: 12.06.2015 09:59:56
Das ist ganz einfach:
https://www.youtube.com/watch?v=KHO5NIcZAc4&list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5

Bild

Betrifft: AW: Excel Dateien erzeugen mit VBA
von: wizard
Geschrieben am: 12.06.2015 10:12:36
Könntest du mir mit nem einfachen Code weiterhelfen? Ich stoße da gerade an meine Grentzen will aber gerne nachvollziehen wie es geht um dazu zu lernen.

Bild

Betrifft: AW: Excel Dateien erzeugen mit VBA
von: Klexy
Geschrieben am: 12.06.2015 10:33:48
Das ist eben kein einfacher Code, sondern eine komplexe Kombination von vielen verschiedenen Code-Elementen, die auch noch an deine speziellen Bedürfnisse angepasst werden müssen.

Bild

Betrifft: AW: Excel Dateien erzeugen mit VBA
von: wizard
Geschrieben am: 12.06.2015 10:52:35
Ok dann einfacher. Nehmen wir an alle Datensätze sind in einer Datei und schon die Duplikate etnfernt. Die Unternehmenskennziffern befinden sich jetzt nicht in der ersten Zeile sondern ersten Spalte. Es soll jetzt für jedes Unternehmen eine extra Excel Datei erzeugt und gespeichert werden. Demnach alle Zeilen die in der ersten Spalte Unternehmen123 stehen haben in Datei Unternehmen123.xslx alle Zeilen die Unternehmen234 in der ersten Spalte stehen haben in Unternehmen 234.xslx usw... Optimal wäre wenn die Unternehmenskennziffern dann wieder in die erste Zeile transformiert werden also die ganze Matrix gedreht wird, muss aber nicht sein. Wie wäre hier das Vorgehen?

Bild

Betrifft: AW: Excel Dateien erzeugen mit VBA
von: Klexy
Geschrieben am: 12.06.2015 16:37:58
Neue Datei erzeugen mit

Workbooks.Add

Zielpfad in einer Variablen festlegen
Pfad = "C\Bla\Blub\"

Dann in der Ausgangsliste das erste Unternehmen feststellen
Zeilennummer in einer Variablen festhalten, die erste Firma wird in Zeile 2 sein:
Zeile = 2

Unternehmensnamen in eine Variable aufnehmen
Unt = ActiveCell.Value

Dann die neue Datei unter dem Unternehmensnamen abspeichern
ActiveWorkbook.SaveAs FileName:=Pfad & Unt & ".xls", _
        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
Dann mit einer For each-Schleife alle Zellen der ersten Spalte durchgehen und bei jedem Treffer die ganze Zeile in die neue Datei kopieren
Bei jeder Trefferzeile die Zeilennummer gegen die Zeilenvariable abprüfen. Wenn die Trefferzeile nur
1 höher ist als die Variable, dann die Variable um 1 hochzählen
Zeile = Zeile + 1

Wenn die Trefferzeile mehr als 1 größer ist als die aktuell gültige Variable, bleibt die Variable unverändert
Nach dem Ende der Schleife kann die Liste mit folgendem Code um 90 Grad gedreht werden:
 Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

Dann die neue Datei speichern und schließen
ActiveWindow.Close Savechanges:=True
Dann die nächste noch nicht bearbeitete Firma feststellen. Das ist die, in der Zeile mit der Zeilennummer um 1 höher als die aktuelle Variable.
Die ganze Geschichte in einer Schleife durchlaufen lassen (Pro neuem Unternehmensnamen ein _ Schleifendurchlauf) bis die die Zeilenvariable das befüllte Ende der Spalte A erreicht hat

Do While ActiveCell <> ""
...
...
Loop
Fertig.

Bild

Betrifft: AW: Excel Dateien erzeugen mit VBA
von: wizard
Geschrieben am: 14.06.2015 17:49:39
Wie sieht der Code komplett aus? Habe es versucht, bekomme aber nen Fehler...

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Excel Dateien erzeugen mit VBA"