Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1720to1724
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Macro anpassen sodass er alle Daten aus allen Arbeitsblättern kopiert

Macro anpassen sodass er alle Daten aus allen Arbeitsblättern kopiert
13.11.2019 10:19:53
Nils
Hallo Leute,
ich habe diesen Code geschrieben, der aus dem Arbeitsblatt PRP_3a korrekt Daten kopiert. jetzt möchte ich den Code so anpassen, dass er alle Arbeitsblätter durchgeht ( Alle Arbeitsblätter fangen immer mit PRP_ an). In meinem Beispiel habe ich es nur mit dem PRP_3a gemacht, jedoch habe ich insgesamt 110 Arbeitsblätter im gleichen format und möchte die Daten eben in dem Arbeitsblatt RawData untereinander kopiert haben.
Könnt Ihr mir hier helfen.
Schon mal vielen Dank!

Sub Collect_Raw_Data_Test()
Dim Data_object As String
Dim Data_Char As String
Dim ITSys_Planned As String
Dim ITSys_Current As String
Dim Brand As String
Dim Max_Zeilen_Data_Object As Integer
Dim aktuelle_Zeile As Integer
Dim Max_Zeilen_ITSys_Current As Integer
Dim Max_Zeilen_ITSys_Planned As Integer
Dim Brand_counter As Integer
Dim Erste_Zeile_PRP As Long
Dim Spalte_Brand_Previous As Long
Dim Spalte_Current_IT_Sys_Previous As Long
Dim Spalte_Planned_IT_Sys_Previous As Long
Dim Spalte_Data_Object As Long
Dim Spalte_Current_IT_Sys_Succ As Long
Dim Spalte_Planned_IT_Sys_Succ As Long
Dim Spalte_Brand_Succ As Long
'Dim Erste_Zeile_RD As Long
'Dim Spalte_Brands_RD As Long
For i = 3 To 5
Sheets(i).Select
'Tue irgendetwas
Next i
aktuelle_Zeile = 0
Brand_counter = 0
ITSys_Planned_counter = 0
With ActiveWorkbook.Worksheets("PRP_3a") 'Ab hier werden dei Inhalte definiert die das PRP_x  _
ausmachen, bzw wo die Daten stehen.
'Dim meine_Blaetter()
'Dim blattindex As Long
'meine_Blaetter = Array("PRP_3a", "PRP_4a")  'hier erweitern aber wie?
'For blattindex = 0 To UBound(meine_Blaetter)
'With ActiveWorkbook.Worksheets(meine_Blaetter(blattindex))
Max_Zeilen_Data_Object = .Range("No_Data_Objects").Value
Max_Zeilen_ITSys_Current = .Range("No_IT_Sys_Prev").Value
Erste_Zeile_PRP = .Range("Beginn_Brands_Previous").Row + 1 'Zeile 47
Spalte_Brand_Previous = .Range("Beginn_Brands_Previous").Column 'Spalte 3
Spalte_Current_IT_Sys_Previous = .Range("Beginn_Current_IT_Sys_Previous").Column
Spalte_Planned_IT_Sys_Previous = .Range("Beginn_Planned_IT_Sys_Previous").Column
Spalte_Data_Object = .Range("Beginn_Data_Object").Column
Spalte_Current_IT_Sys_Succ = .Range("Beginn_Current_IT_Sys_Succ").Column
Spalte_Planned_IT_Sys_Succ = .Range("Beginn_Planned_IT_Sys_Succ").Column
Spalte_Brand_Succ = .Range("Beginn_Brands_Succ").Column
'Erste_Zeile_RD = .Range("PRP_RD").Row + 1
'Spalte_Brands_RD = .Range("Brands_RD").Column
'Spalte_Current_IT_Sys_RD = .Range("Current_IT_Sys_RD").Column
'Spalte_Current_Planned_IT_Sys_RD = .Range("Planned_IT_Sys_RD").Column
'Spalte_Current_Data_Objects_RD = .Range("Data_Objects_RD").Column
For j = 0 To Max_Zeilen_ITSys_Current - 1
For i = 0 To Max_Zeilen_Data_Object - 1
Brand = .Cells(Erste_Zeile_PRP + Brand_counter, Spalte_Brand_Previous).Value
ITSys_Current = .Cells(Erste_Zeile_PRP + j, Spalte_Current_IT_Sys_Previous).Value
ITSys_Planned = .Cells(Erste_Zeile_PRP + j, Spalte_Planned_IT_Sys_Previous).Value
Data_object = .Cells(Erste_Zeile_PRP + i, Spalte_Data_Object).Value
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 3).Value = Brand
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 4).Value = ITSys_Current
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 5).Value = ITSys_Planned
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 6).Value = Data_object
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 7).Value = "Previous"
aktuelle_Zeile = aktuelle_Zeile + 1
Next i
Brand_counter = Brand_counter + 1
Next j
Max_Zeilen_ITSys_Current = .Range("No_of_IT_Sys_Plan")
For m = 0 To Max_Zeilen_ITSys_Current - 1
For p = 0 To Max_Zeilen_Data_Object - 1
Brand = .Cells(Erste_Zeile_PRP + m, 16).Value
ITSys_Current_succ = .Cells(Erste_Zeile_PRP + m, Spalte_Current_IT_Sys_Succ).Value
ITSys_Planned_succ = .Cells(Erste_Zeile_PRP + m, Spalte_Planned_IT_Sys_Succ).Value
Data_object = .Cells(Erste_Zeile_PRP + p, Spalte_Data_Object).Value
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 3).Value = Brand
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 4).Value = ITSys_Current_succ
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 5).Value = ITSys_Planned_succ
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 6).Value = Data_object
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 7).Value = "Succeeding"
aktuelle_Zeile = aktuelle_Zeile + 1
Next p
Brand_counter = Brand_counter + 1
Next m
End With
End Sub

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Macro anpassen sodass er alle Daten aus allen Arbeitsblättern kopiert
13.11.2019 10:37:30
peterk
Hallo
Bau ein Schleife über alle Worksheets

Dim myWS as Worksheet
For each myWS in ActiveWorkbook.Worksheets
If mid(myWS.name,1,3) = "PRP" then
. Dein Code
end if
Next myWS

AW: Macro anpassen sodass er alle Daten aus allen
13.11.2019 11:46:52
Nils
Ok super vielen dank, nur dummer frage, wie baue ich das ein bzw. was muss ich zusätzlich verändern sodass er auch PRP_4 kopiert. Sorry für die frage aber bin einfach ein VBA noob :(
AW: Macro anpassen sodass er alle Daten aus allen
13.11.2019 12:01:51
peterk
Hallo
Hab die Zeilen im Code mit "NEU" kommentiert
Modul Modul4
Sub Collect_Raw_Data_Test() 
 
    Dim Data_object As String 
    Dim Data_Char As String 
    Dim ITSys_Planned As String 
    Dim ITSys_Current As String 
 
    Dim Brand As String 
 
    Dim Max_Zeilen_Data_Object As Integer 
    Dim aktuelle_Zeile As Integer 
    Dim Max_Zeilen_ITSys_Current As Integer 
    Dim Max_Zeilen_ITSys_Planned As Integer 
    Dim Brand_counter As Integer 
    Dim Erste_Zeile_PRP As Long 
    Dim Spalte_Brand_Previous As Long 
    Dim Spalte_Current_IT_Sys_Previous As Long 
    Dim Spalte_Planned_IT_Sys_Previous As Long 
    Dim Spalte_Data_Object As Long 
    Dim Spalte_Current_IT_Sys_Succ As Long 
    Dim Spalte_Planned_IT_Sys_Succ As Long 
    Dim Spalte_Brand_Succ As Long 
    'Dim Erste_Zeile_RD As Long 
    'Dim Spalte_Brands_RD As Long 
 
    Dim myWS As Worksheet    ' NEU 
 
 
    For i = 3 To 5 
        Sheets(i).Select 
        'Tue irgendetwas 
    Next i 
 
    aktuelle_Zeile = 0 
    Brand_counter = 0 
    ITSys_Planned_counter = 0 
 
    For Each myWS In ActiveWorkbook.Worksheets  'NEU 
        If Mid(myWS, 1, 3) = "PRP" Then         'NEU 
            With myWS                           'NEU/GEÄNDERT 
                'Ab hier werden dei Inhalte definiert die das PRP_x ausmachen, bzw wo die Daten stehen. 
 
                'Dim meine_Blaetter() 
                'Dim blattindex As Long 
 
                'meine_Blaetter = Array("PRP_3a", "PRP_4a")  'hier erweitern aber wie? 
 
                'For blattindex = 0 To UBound(meine_Blaetter) 
                'With ActiveWorkbook.Worksheets(meine_Blaetter(blattindex)) 
 
                Max_Zeilen_Data_Object = .Range("No_Data_Objects").Value 
                Max_Zeilen_ITSys_Current = .Range("No_IT_Sys_Prev").Value 
                Erste_Zeile_PRP = .Range("Beginn_Brands_Previous").Row + 1    'Zeile 47 
 
 
                Spalte_Brand_Previous = .Range("Beginn_Brands_Previous").Column    'Spalte 3 
                Spalte_Current_IT_Sys_Previous = .Range("Beginn_Current_IT_Sys_Previous").Column 
                Spalte_Planned_IT_Sys_Previous = .Range("Beginn_Planned_IT_Sys_Previous").Column 
                Spalte_Data_Object = .Range("Beginn_Data_Object").Column 
                Spalte_Current_IT_Sys_Succ = .Range("Beginn_Current_IT_Sys_Succ").Column 
                Spalte_Planned_IT_Sys_Succ = .Range("Beginn_Planned_IT_Sys_Succ").Column 
                Spalte_Brand_Succ = .Range("Beginn_Brands_Succ").Column 
                'Erste_Zeile_RD = .Range("PRP_RD").Row + 1 
                'Spalte_Brands_RD = .Range("Brands_RD").Column 
                'Spalte_Current_IT_Sys_RD = .Range("Current_IT_Sys_RD").Column 
                'Spalte_Current_Planned_IT_Sys_RD = .Range("Planned_IT_Sys_RD").Column 
                'Spalte_Current_Data_Objects_RD = .Range("Data_Objects_RD").Column 
 
                For j = 0 To Max_Zeilen_ITSys_Current - 1 
 
                    For i = 0 To Max_Zeilen_Data_Object - 1 
 
                        Brand = .Cells(Erste_Zeile_PRP + Brand_counter, Spalte_Brand_Previous).Value 
                        ITSys_Current = .Cells(Erste_Zeile_PRP + j, Spalte_Current_IT_Sys_Previous).Value 
                        ITSys_Planned = .Cells(Erste_Zeile_PRP + j, Spalte_Planned_IT_Sys_Previous).Value 
                        Data_object = .Cells(Erste_Zeile_PRP + i, Spalte_Data_Object).Value 
 
                        Worksheets("RawData").Cells(3 + aktuelle_Zeile, 3).Value = Brand 
                        Worksheets("RawData").Cells(3 + aktuelle_Zeile, 4).Value = ITSys_Current 
                        Worksheets("RawData").Cells(3 + aktuelle_Zeile, 5).Value = ITSys_Planned 
                        Worksheets("RawData").Cells(3 + aktuelle_Zeile, 6).Value = Data_object 
                        Worksheets("RawData").Cells(3 + aktuelle_Zeile, 7).Value = "Previous" 
 
                        aktuelle_Zeile = aktuelle_Zeile + 1 
 
                    Next i 
 
                    Brand_counter = Brand_counter + 1 
 
                Next j 
 
                Max_Zeilen_ITSys_Current = .Range("No_of_IT_Sys_Plan") 
 
                For m = 0 To Max_Zeilen_ITSys_Current - 1 
                    For p = 0 To Max_Zeilen_Data_Object - 1 
                        ' 
                        Brand = .Cells(Erste_Zeile_PRP + m, 16).Value 
                        ITSys_Current_succ = .Cells(Erste_Zeile_PRP + m, Spalte_Current_IT_Sys_Succ).Value 
                        ITSys_Planned_succ = .Cells(Erste_Zeile_PRP + m, Spalte_Planned_IT_Sys_Succ).Value 
                        Data_object = .Cells(Erste_Zeile_PRP + p, Spalte_Data_Object).Value 
 
                        Worksheets("RawData").Cells(3 + aktuelle_Zeile, 3).Value = Brand 
                        Worksheets("RawData").Cells(3 + aktuelle_Zeile, 4).Value = ITSys_Current_succ 
                        Worksheets("RawData").Cells(3 + aktuelle_Zeile, 5).Value = ITSys_Planned_succ 
                        Worksheets("RawData").Cells(3 + aktuelle_Zeile, 6).Value = Data_object 
                        Worksheets("RawData").Cells(3 + aktuelle_Zeile, 7).Value = "Succeeding" 
 
                        aktuelle_Zeile = aktuelle_Zeile + 1 
 
                    Next p 
 
                    Brand_counter = Brand_counter + 1 
 
                Next m 
 
            End With 
        End If    'NEU 
    Next myWS     'NEU 
 
End Sub 
 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Anzeige
AW: Macro anpassen sodass er alle Daten aus allen
13.11.2019 12:12:49
Nils
mhmm bekomme die Fehlermeldund, code unterstützt diese Eigenschaft/methode nicht
AW: Macro anpassen sodass er alle Daten aus allen
13.11.2019 12:24:49
peterk
Hallo
In welcher Zeile ?
AW: Macro anpassen sodass er alle Daten aus allen
13.11.2019 13:28:09
Nils
Bei (If Mid(myWS, 1, 3) = "PRP" Then 'NEU)
Sub Collect_Raw_Data_Test_NB()
Dim Data_object As String
Dim Data_Char As String
Dim ITSys_Planned As String
Dim ITSys_Current As String
Dim Brand As String
Dim Max_Zeilen_Data_Object As Integer
Dim aktuelle_Zeile As Integer
Dim Max_Zeilen_ITSys_Current As Integer
Dim Max_Zeilen_ITSys_Planned As Integer
Dim Brand_counter As Integer
Dim Erste_Zeile_PRP As Long
Dim Spalte_Brand_Previous As Long
Dim Spalte_Current_IT_Sys_Previous As Long
Dim Spalte_Planned_IT_Sys_Previous As Long
Dim Spalte_Data_Object As Long
Dim Spalte_Current_IT_Sys_Succ As Long
Dim Spalte_Planned_IT_Sys_Succ As Long
Dim Spalte_Brand_Succ As Long
'Dim Erste_Zeile_RD As Long
'Dim Spalte_Brands_RD As Long
Dim myWS As Worksheet    ' NEU
For i = 3 To 3
Sheets(i).Select
Next i
aktuelle_Zeile = 0
Brand_counter = 0
ITSys_Planned_counter = 0
For Each myWS In ActiveWorkbook.Worksheets  'NEU
If Mid(myWS, 1, 3) = "PRP" Then         'NEU
With myWS                           'NEU/GEÄNDERT
Max_Zeilen_Data_Object = .Range("No_Data_Objects").Value
Max_Zeilen_ITSys_Current = .Range("No_IT_Sys_Prev").Value
Erste_Zeile_PRP = .Range("Beginn_Brands_Previous").Row + 1
Spalte_Brand_Previous = .Range("Beginn_Brands_Previous").Column
Spalte_Current_IT_Sys_Previous = .Range("Beginn_Current_IT_Sys_Previous"). _
Column
Spalte_Planned_IT_Sys_Previous = .Range("Beginn_Planned_IT_Sys_Previous"). _
Column
Spalte_Data_Object = .Range("Beginn_Data_Object").Column
Spalte_Current_IT_Sys_Succ = .Range("Beginn_Current_IT_Sys_Succ").Column
Spalte_Planned_IT_Sys_Succ = .Range("Beginn_Planned_IT_Sys_Succ").Column
Spalte_Brand_Succ = .Range("Beginn_Brands_Succ").Column
'Erste_Zeile_RD = .Range("PRP_RD").Row + 1
'Spalte_Brands_RD = .Range("Brands_RD").Column
'Spalte_Current_IT_Sys_RD = .Range("Current_IT_Sys_RD").Column
'Spalte_Current_Planned_IT_Sys_RD = .Range("Planned_IT_Sys_RD").Column
'Spalte_Current_Data_Objects_RD = .Range("Data_Objects_RD").Column
For j = 0 To Max_Zeilen_ITSys_Current - 1
For i = 0 To Max_Zeilen_Data_Object - 1
Brand = .Cells(Erste_Zeile_PRP + Brand_counter, Spalte_Brand_Previous). _
Value
ITSys_Current = .Cells(Erste_Zeile_PRP + j,  _
Spalte_Current_IT_Sys_Previous).Value
ITSys_Planned = .Cells(Erste_Zeile_PRP + j,  _
Spalte_Planned_IT_Sys_Previous).Value
Data_object = .Cells(Erste_Zeile_PRP + i, Spalte_Data_Object).Value
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 3).Value = Brand
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 4).Value =  _
ITSys_Current
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 5).Value =  _
ITSys_Planned
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 6).Value = Data_object
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 7).Value = "Previous"
aktuelle_Zeile = aktuelle_Zeile + 1
Next i
Brand_counter = Brand_counter + 1
Next j
Max_Zeilen_ITSys_Current = .Range("No_of_IT_Sys_Plan")
For m = 0 To Max_Zeilen_ITSys_Current - 1
For p = 0 To Max_Zeilen_Data_Object - 1
Brand = .Cells(Erste_Zeile_PRP + m, 16).Value
ITSys_Current_succ = .Cells(Erste_Zeile_PRP + m,  _
Spalte_Current_IT_Sys_Succ).Value
ITSys_Planned_succ = .Cells(Erste_Zeile_PRP + m,  _
Spalte_Planned_IT_Sys_Succ).Value
Data_object = .Cells(Erste_Zeile_PRP + p, Spalte_Data_Object).Value
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 3).Value = Brand
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 4).Value =  _
ITSys_Current_succ
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 5).Value =  _
ITSys_Planned_succ
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 6).Value = Data_object
Worksheets("RawData").Cells(3 + aktuelle_Zeile, 7).Value = "Succeeding"
aktuelle_Zeile = aktuelle_Zeile + 1
Next p
Brand_counter = Brand_counter + 1
Next m
End With
End If    'NEU
Next myWS     'NEU
End Sub

Anzeige
AW: Macro anpassen sodass er alle Daten aus allen
13.11.2019 13:32:07
Werner
Hallo,
If Mid(myWS.Name, 1, 3) = "PRP" Then
Gruß Werner
AW: Macro anpassen sodass er alle Daten aus allen
13.11.2019 13:33:18
peterk
Hallo
Sorry: If mid(myWs.Name,1,3)="PRP" then
AW: Macro anpassen sodass er alle Daten aus allen
13.11.2019 14:32:02
Nils
Verdammt haha ;)
jetzt kommt : Die Methode Range für das Objekt _Worksheet ist fehlgeschlagen..
Max_Zeilen_Data_Object = .Range("No_Data_Objects").Value
Hier wird ein fehler angezeigt.
AW: Macro anpassen sodass er alle Daten aus allen
13.11.2019 15:08:40
peterk
Hallo
Vermutung: "No_Data_Objects" wurde im Namens-Manager definiert und bezieht sich somit auf nur 1 Tabellenblatt. Wenn das Makro die weiteren Blätter abarbeitet findet es diesen Namen für das aktuelle Blatt nicht und damit kommt es zu dem von Dir beschrieben Fehler.
Des weiteren musst die Initialisierung von "Brand_counter = 0" innerhalb der "for each" Schleife machen.
Wenn das alles nichts hilft, Bitte eine Beispieldatei.
Peter
Anzeige
AW: Macro anpassen sodass er alle Daten aus allen
13.11.2019 15:21:12
Nils
https://www.herber.de/bbs/user/133179.xlsm
hier der link.
Er kopiert die Daten eben nicht richtig für PRP_3b hier ist wird brand nicht mit rüberkopiert. Sonst passt eigentlich alles, liegt dann am counter ?
AW: Macro anpassen sodass er alle Daten aus allen
13.11.2019 16:08:25
peterk
Hallo
Wie ich Dir bereits geschrieben habe, musst Du den Brand_Counter an der richtigen Stelle initialisieren.
    aktuelle_Zeile = 0

    ITSys_Planned_counter = 0
    Brand_counter = 0    ' Kann hier gelöscht werden, wird in der Schleife gesetzt 


    For Each myWS In ActiveWorkbook.Worksheets  'NEU 
        If Mid(myWS.Name, 1, 3) = "PRP" Then
            Brand_counter = 0    ' NEU: <--- in der Schleife zurücksetzen 
            With myWS                           'NEU/GEÄNDERT 

                Max_Zeilen_Data_Object = .Range("No_Data_Objects").Value
                Max_Zeilen_ITSys_Current = .Range("No_IT_Sys_Prev").Value

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Anzeige
AW: Macro anpassen sodass er alle Daten aus allen
13.11.2019 16:20:40
Nils
Ok Danke dir! jetzt muss ich es nur hinbekommen dass er auch aus dem zweiten blatt die korrekten Daten ziehen daher die Datenobjekte

268 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige