Zusammenführung von Tabellen

Hallo zusammen
Excel 2003
ich erhalte 1-10 Excel-Dateien, wo jeweils in der ersten Tabelle in der A-Spalte ID-Nummern sind (in allen Dateien gleich) und in den B-Spalten jeweils Daten, die zu den ID-Nummern gehören.
Die Dateien sind unterschiedlich benamst (2.xls, 7.xls, 9.xls, usw.)
Mein Ziel ist es, mittels eines Programms folgendes zu realisieren:

  1. Abfrage, bzw. Eingabe der Dateinamen (da immer unterschiedliche Namen und Anzahl)
  2. Zusammenführung aller Daten: Von der 1. Tabelle die A-Spalte in A und die B-Spalte in B, von der 2. Tabelle die B-Spalte in C, von der 3. Tabelle die B-Spalte in D, usw. usw.
    Das Resultat wäre eine Tabelle mit ID in A und sämtliche Daten in B,C,D,E…

In Access schaffe ich es, ein wenig in VBA zu programmieren, in Excel habe ich es noch nie versucht. Hat jemand eine Lösung?
Besten Dank für die Unterstützung.

Beat

  1. Abfrage, bzw. Eingabe der Dateinamen (da immer
    unterschiedliche Namen und Anzahl)
  2. Zusammenführung aller Daten: Von der 1. Tabelle die
    A-Spalte in A und die B-Spalte in B, von der 2. Tabelle die
    B-Spalte in C, von der 3. Tabelle die B-Spalte in D, usw. usw.
    Das Resultat wäre eine Tabelle mit ID in A und sämtliche Daten
    in B,C,D,E…

Hi Beat,

ich würde die neuen Dateien immer in einen Ordner packen, entweder immer den gleichen und anschliessend löschen oder immer einen neuen mit Tagesdatum was quasi Archivierung bedeutet.

Alt+F11, Einfügen–Modul, Code reinkopieren. Dann Cursor in den Code stellen und F8 zum Testen, wenn der Debugger jammert, sage mir in welcher Zeile, wenn du im Debug-Modus bist, kannst du mit der maus dich über Variablen stellen und siehst dann deren momentaten Wert, hilfreich um Fehler zu suchen.
Analog, die Maus über eine Anweisung zu stellen und F1 drücken, dann kommt die Hilfe zu dem Befehl. May be ich habe Syntaxfehler eingebaut.

Ungetestet mal als Ansatz:

Option Explicit

Sub Zusammen()
Dim Anz As Integer
Application.ScreenUpdating = False
On Error GoTo Fehler
With Application.FileSearch
 .Filename = "\*.xls"
 .LookIn = "C:\MeinOrdner"
 .SearchSubFolders = False
 .Execute
 For Anz = 1 To .FoundFiles.Count
 Workbooks.Open .FoundFiles(Anz)
 If Anz 1 Then
 Columns(2).Copy Destination:=ThisWorkbook.Worksheets("Tabelle1").Cells(1, Anz + 1)
 Else
 Columns(1).Copy Destination:=ThisWorkbook.Worksheets("Tabelle1").Cells(1, 1)
 Columns(2).Copy Destination:=ThisWorkbook.Worksheets("Tabelle1").Cells(1, Anz + 1)
 End If
 ActiveWorkbook.Close savechanges:=False
 Next Anz
End With
Fehler:
Application.ScreenUpdating = True
End Sub

Gruß
Reinhard

Hi Reinhard,
erst mal ganz herzlichen Dank für Deine Mühe. Leider kann man nur einen Stern vergeben.
Ich hab’ das alles mal ausprobiert. Leider habe ich zu Hause nur die Version 2007. Da musste ich einige Dinge ersetzen. Aber im Grundsatz tut es genau das, was ich mir eigentlich wünsche. Auf jeden Fall sind Deine Daten eine tolle Vorlage.
Ich werde nun ein wenig damit herumspielen und mir erlauben, Dich zu kontaktieren, wenn ich da eine spezifische Frage habe. OK?

Also nochmals besten Dank für Deine grosse Hilfe und schöne Grüsse aus der Schweiz
Beat

Hi Beat,

Ich hab’ das alles mal ausprobiert. Leider habe ich zu Hause
nur die Version 2007. Da musste ich einige Dinge ersetzen.

ich habe kein XL2007, was mußtest du warum wo und wie ersetzen?

Aber im Grundsatz tut es genau das, was ich mir eigentlich
wünsche. Auf jeden Fall sind Deine Daten eine tolle Vorlage.
Ich werde nun ein wenig damit herumspielen und mir erlauben,
Dich zu kontaktieren, wenn ich da eine spezifische Frage habe.
OK?

Bitte hier, ohne Email.

Gruß
Reinhard

Hi Reinhard,
ich hatte noch keine Gelegenheit, etwas mit Excel 2003 zu testen.
Aber ich möchte gerne Deine Fragen beantworten:

Ich hab’ das alles mal ausprobiert. Leider habe ich zu Hause
nur die Version 2007. Da musste ich einige Dinge ersetzen.

ich habe kein XL2007, was mußtest du warum wo und wie
ersetzen?

Also z.B. scheint es keine Funktion „Application.FileSearch“ mehr zu geben. Dafür habe ich „Application.FindFile“ gefunden. Diese wiederum funktioniert aber nicht mit „With“.
„.execute“ scheint es auch nicht (mehr) zu geben.
Anyway, ich habe probehalber einfach mal „eine For Anz“ Schleife gemacht und es so probiert. Wie gesagt …siehe nächste Zeile

Aber im Grundsatz tut es genau das, was ich mir eigentlich
wünsche. Auf jeden Fall sind Deine Daten eine tolle Vorlage.
Ich werde nun ein wenig damit herumspielen und mir erlauben,
Dich zu kontaktieren, wenn ich da eine spezifische Frage habe.
OK?

Bitte hier, ohne Email.

Selbstverständlich. Versprochen.

Gruß
Reinhard

Ebensolche
Beat

Also z.B. scheint es keine Funktion „Application.FileSearch“
mehr zu geben. Dafür habe ich „Application.FindFile“ gefunden.
Diese wiederum funktioniert aber nicht mit „With“.
„.execute“ scheint es auch nicht (mehr) zu geben.

Hi Beat,
soll kein Mißtrauen sein :smile:, aber ich habe mal in einem anderen Forum nachgefragt, ja, FileSearch hat MS in XL2007 abgeschafft.
K.A. warum.

Und ich bekam Code wie man einen Ordner ausliest in XL2007 ohne Filesearch.
Allerdings war der mal für andere weitere Dinge gedacht und ist recht umfangreich, Zum reinen Dateinamen einlesen eines Ordners kann man da 80% streichen.

Und das Einlesen der vorhandenen Dateinamen ist ja die Grundvoraussetzung zur Lösung deiner Problematik.

Allerdings, habe ich keine Lust diese Codekürzungen durchzuführen, ist mir zuviel Arbeit für lau.

Aber wenn du gerne rumspielst mit Code, bitteschön:

http://www.badongo.com/file/4196164

Und, der im Code erwähnte Nepumuk ist einer der Größten im XL_Vba Bereich in Deutschland, seine Codes laufen immer.
Sind aber für den Laien schwierig zu verstehen und völlig anders aufgebaut als mein Laiencode.

Wie angedeutet, bastle asu dem Code in den beiden Dateien einen Code der am besten in einer Arrayvariablen die dateinamen enthält, dann mache ich oder Andre hier gerne die kleine Anpassung daß dann die auch ausgelesen werden usw.

Gruß
Reinhard

Hallo Reinhard,

Wie angedeutet, bastle asu dem Code in den beiden Dateien
einen Code der am besten in einer Arrayvariablen die
dateinamen enthält, dann mache ich oder Andre hier gerne die
kleine Anpassung daß dann die auch ausgelesen werden usw.

Ich versuche natürlich erst mal, das alleine zu schaffen, bin aber sehr dankbar für Dein Angebot. Vielleicht (wahrscheinlich, möglicherweise, eventuell) komme ich gerne wieder darauf zurück. Vielen Dank vorerst.
Beste Grüsse
Beat