167 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo in die Runde,

ich bin ein absoluter VBA Anfänger und komme einfach nicht weiter bzw. finde gar keinen Ansatz.

Ich habe 2 verschiedene Arbeitsmappen. In der ersten ist eine Übersicht die ständig aktualisiert wird. In der zweiten Arbeitsmappe sind ungefähr 500 einzelne Tabs die durchnummeriert (nicht fortlaufend) aber inhaltlich alle gleich aufgebaut sind.

In der Übersicht gibt es eine Spalte (L) in der ich die Namen der Tabs eintrage.

Besteht die Möglichkeit die Spalte L auszulesen und immer, wenn beispielsweise "1105" dort steht, die komplette Zeile in den Tab 1105 in der anderen Arbeitsmappe anzuzeigen?

Vielen lieben Dank im voraus :)

Lynn

3 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
ausgewählt von halfstone
 
Beste Antwort

Hallo Lynn,

hier mal ein einfacher Beispielcode, der in ein allgemeines Modul deiner Übersichtsdatei gehört:

Sub kopieren()
Dim wbZiel As Workbook
Dim wbQuelle As Workbook
Dim strPfad As String
Dim strTabelle As String
Dim lngZeile As Long
Dim lngLetzte As Long
Dim lngEinf As Long
Dim i As Long

'Pfad der zu öffnenden Datei festlegen
'hier liegt die zu öffnende Datei im selben Verzeichnis wie die Datei in der dieser Code steht; Name der zu öffnenden Datei muss angepasst werden
'ansonsten z.B. so: strPfad ="C:\Daten\Einzelaufstellung.xlsx"
strPfad = ThisWorkbook.Path & "\Einzelaufstellung.xlsx"
Set wbQuelle = ThisWorkbook 'Die Mappe, in der der Code liegt
'Datei öffnen, in die die Datensätze kopiert werden sollen
Set wbZiel = Workbooks.Open(strPfad)
'auf das Tabellenblatt mit den Daten in der aktuellen Tabelle zugreifen
With wbQuelle.Worksheets("Übersicht")
  'letzte Zeile in Spalte L ermitteln
  lngLetzte = .Cells(Rows.Count, 12).End(xlUp).Row
  'nun die Spalte L durchlaufen - ab Zeile 2, da in Zeile 1 Überschriften stehen, ggf. anpassen
  For lngZeile = 2 To lngLetzte
    'Name der Tabelle aus Spalte L auslesen
    strTabelle = .Cells(lngZeile, 12).Value
    'Prüfen ob Tabelle in Zieldatei existiert
    For i = 1 To wbZiel.Worksheets.Count
      If wbZiel.Worksheets(i).Name = strTabelle Then
        'falls Tabellenblatt existiert, dann Einfügezeile ermitteln
        'letzte Zeile + 1
        lngEinf = wbZiel.Worksheets(i).Cells(Rows.Count, 1).End(xlUp).Row + 1
        'Zeile kopieren
        .Rows(lngZeile).Copy Destination:=wbZiel.Worksheets(i).Rows(lngEinf)
      End If
    Next i
   Next lngZeile
End With
    
'Zieldatei speichern und schließen
wbZiel.Close (True)
     
'Zuweisungen wieder aufheben
Set wbQuelle = Nothing
Set wbZiel = Nothing
End Sub

Achtung: Hier werden immer alle Datensätze durchlaufen und in die Arbeitsmappe mit den Einzeltabellen kopiert.

Gruß

M.O.

0 Punkte
Beantwortet von
Hallo m-o,

Das funktioniert einwandfrei. Ich bin wunschlos glücklich.

Vielen vielen Dank und ein frohes Fest :)

Lynn
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Lynn,

gern geschehen und auch dir ein frohes Fest.

Gruß

M.O.
...