144 Aufrufe
Gefragt in Tabellenkalkulation von
Hi und Servus !

Ich bin nicht gerade der Excel Profi und habe vorhin das erste mal VBA Angewendet was auch gut geklappt hat.

Ich brächte eine Funktion ( wahrscheinlich am besten mit VBA ) wo ich die Inhalte von ca 1000. Tabellenblättern in eine neue Datei oder einfach ein neue Tabellenblatt geschrieben bekomme.

Bedeutet: Inhalt Tabellenblatt 1 Felder Zeile A1 bis Zeile A? (hängt davon ab ob da  Inhalt ist) soll in die neue Datei oder Tabellenblatt geschrieben werden in Spalte A. Spalte B sollte der Name des Tabellenblatt vom Ursprung geschrieben werden.

Kann mir jemand Helfen ?

16 Antworten

0 Punkte
Beantwortet von m-o Profi (15.2k Punkte)
Hallo,Carsten,

stehen die Dateien alle im selben Verzeichnis? Ansonsten müsstest du ja jede Datei einzeln ansprechen. Sollen die Daten pro Datei in ein Tabellenblatt geschrieben werden oder können z.B. 100 oder 200 Dateien in einem Arbeitsblatt zusammengefasst werden (d.h. pro importierter Datei zwei Spalten)?

Gruß

M.O.
0 Punkte
Beantwortet von

Hallo M.O.,

vielleicht habe ich das nicht richtig geschrieben oder in meinem Lainhaften Excel Verständniss: es ist nur eine Datei die über Tausend Karteireiter hat. Die Inhalte diese Reiter will ich alles in einem zusammenführen, am besten in Spalte A die ganzen Werte und in Spalte B von welchem Reiter es her kommt, wirklich nur eine Datei, habe die Datei auch hier hoch geladen :

http://supportnet.de/forum/?qa=blob&qa_blobid=1700745086284196655

0 Punkte
Beantwortet von m-o Profi (15.2k Punkte)

Hallo Carsten,

das ist das typische Beispiel von Sender und Empfänger. Mit deiner neuen Erklärung verstehe ich deine Frange jetzt ganz anders smiley.

Du hast in deiner Beispieldatei ja keine Werte stehen (wenn ich das so richtig sehe; ich habe mir jetzt nicht alle Tabellenblätter angeschaut). Falls dort Werte stehen, stehen diese nur in Spalte A und dann ohne Leerzeichen untereinander? Und sollen diese dann im Blatt "Aufgearbeitet" untereinander aufgelistet werden?

Gruß

M.O.

0 Punkte
Beantwortet von
Richtig !

Genau so soll es sein ! Würde denn eine Leerstelle in der Spalte A Probleme bereiten ?

Gruß

Carsten
0 Punkte
Beantwortet von m-o Profi (15.2k Punkte)
Hallo Carsten,

nein, dann stehen eben nur leere Zellen in der Auflistung. Aber diese kann man rausfiltern. Wenn in einzelnen Tabellenblätter keine Werte stehen, sollen diese dann mit einem Leereintrag in Spalte A aufgelistet werden oder sollen nur tatsächlich vorhandene Werte aufgelistet werden.

Gruß

M.O.
0 Punkte
Beantwortet von
Es sollen nur tatsächlich vorhandene Werte aufgelistet werden. Leerzeichen bei den Werten ist kein Problem, wir achten bei der Eingabe darauf das es keine Leerzeichen gibt ;-)

Carsten
0 Punkte
Beantwortet von m-o Profi (15.2k Punkte)

Hallo Carsten,

das folgende Makro gehört in ein Standardmodul deiner betreffenden Arbeitsmappe:

Sub Zusammenfassung()

Dim lngLetzte As Long
Dim lngZeile As Long
Dim lngZaehler As Long
Dim i As Long

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'Inhalte aus dem Arbeitsblatt Aufgearbeitet löschen
With Worksheets("Aufgearbeitet")
.UsedRange.ClearContents
End With

'Nun jedes Arbeitsblatt in der Mappe durchlaufen
For i = 1 To ThisWorkbook.Worksheets.Count
  'nur Daten aus den Arbeitsblättern auslesen, die nicht gleich Zielarbeitsblatt sind
  If Worksheets(i).Name <> "Aufgearbeitet" Then
    With Worksheets(i)
     'letzte beschriebene Zeile in Spalte A des betreffenden Arbeitsblattes ermitteln
     lngLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
     'nun alle Zeilen durchlaufen und Daten kopieren
      For lngZeile = 1 To lngLetzte
         'nur Werte in Übersicht schreiben
          If .Cells(lngZeile, 1).Value <> "" Then
             'Zähler für Einfügezeile erhöhen
              lngZaehler = lngZaehler + 1
              Worksheets("Aufgearbeitet").Cells(lngZaehler, 1) = .Cells(lngZeile, 1)   'Wert aus Spalte A
              Worksheets("Aufgearbeitet").Cells(lngZaehler, 2) = .Name    'Name des Quellarbeitsblattes
          End If
      Next lngZeile
     End With
  End If
Next i

Worksheets("Aufgearbeitet").Activate

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub

Ggf. vorhandene Inhalte im Arbeitsblatt "Aufgearbeitet" werden ohne Nachfrage beim Start des Makros gelöscht.

Gruß

M.O.

0 Punkte
Beantwortet von
Hey, Sorry das ich mich gemeldet hatte, war paar Tage im Ausland. Scheint auf den ersten Blick alles zu passen, sage schon mal großes Dankeschön !
0 Punkte
Beantwortet von m-o Profi (15.2k Punkte)
Hallo Carsten,

danke für die Rückmeldung.

Gruß

M.O.
0 Punkte
Beantwortet von
Hey Sorry das ich nochmals etwas Nachfragen muss: Es Funktioniert  soweit alles aber wir haben auf den jeweiligen Arbeitsblättern in den Spalten B jeweils eine Menge stehen die auch in das Arbeistblatt "Aufgearbeitet" geschrieben werden muss. Kann man das noch Ergänzen ?
...