Excel-Makro
Hallo Zusammen!!
Ich bin nicht so fit in Excel Makros und wollte mich hier erkundigen, ob mir jemand helfen kann
Ich habe folgendes Problem...
Ich habe eine Excel Liste (1.Tabellenblatt) in Spalte A steht jeweils der Nachname & in Spalte B steht dann der Status, ob diese Datei schon angelegt wurde ( soll dann durch das Makro beschrieben werden) & habe eine riesige Datei (2. Tabellenblatt) die immer wieder variiert und aus dieser soll das Makro nach dem Nachnamen aus Spalte A (/ oder nach einer Kundennummer in Spalte XY) die Datensätze aus Tabellenblatt 2 zu diesem Nachnamen in eine neue Excel Datei - unter diesem Nachnamen speichern. ( Oder mal statt dem Nachnamen nach der Kundennummer filtern)
Hier zu wurde schonmal ein Makro geschrieben, jedoch ist funktioniert dieses nicht mehr richtig bzw. wie kann man das anpassen, dass wenn neue Datensätze reinkommen es weiterhin funktioniert.
Wie gesagt ich verstehe da leider nicht viel von deshalb weiss ich nicht woran es hakt... Sorry wenn es so offensichtlich ist ^^
VIELEN DANK für jegliche Hilfe!
LG Yuki!
Hier das bisherige Makro:
Sub DatenKopieren()
l_z = 1
l_ende = 0
l_pfad = ActiveWorkbook.Path
l_seite = "Rohdaten"
l_steuerung = "Steuerung"
l_spalte = 2
ActiveWorkbook.Save
Sheets(l_seite).Select
Range("A" & l_z).Select
Selection.AutoFilter
Do
l_z = l_z + 1
Sheets(l_steuerung).Select
Range("A" & l_z).Select
l_vz = ActiveCell
If l_vz = "" Then
l_ende = 1
Else
Sheets(l_seite).Select
Selection.AutoFilter Field:=l_spalte, Criteria1:=l_vz, Operator:=xlAnd
Range(Selection, Selection.End(xlDown)).Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
l_pfad & "\" & l_vz & ".xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
ActiveWindow.Close
Sheets(l_steuerung).Select
Range("B" & l_z).Select
ActiveCell.FormulaR1C1 = "Fertig!"
End If
Loop Until l_ende = 1
L_1 = MsgBox(("Dateien sind erstellt!"), vbExclamation + vbOKOnly, "Bin Fertig!")
End Sub
Ich bin nicht so fit in Excel Makros und wollte mich hier erkundigen, ob mir jemand helfen kann
Ich habe folgendes Problem...
Ich habe eine Excel Liste (1.Tabellenblatt) in Spalte A steht jeweils der Nachname & in Spalte B steht dann der Status, ob diese Datei schon angelegt wurde ( soll dann durch das Makro beschrieben werden) & habe eine riesige Datei (2. Tabellenblatt) die immer wieder variiert und aus dieser soll das Makro nach dem Nachnamen aus Spalte A (/ oder nach einer Kundennummer in Spalte XY) die Datensätze aus Tabellenblatt 2 zu diesem Nachnamen in eine neue Excel Datei - unter diesem Nachnamen speichern. ( Oder mal statt dem Nachnamen nach der Kundennummer filtern)
Hier zu wurde schonmal ein Makro geschrieben, jedoch ist funktioniert dieses nicht mehr richtig bzw. wie kann man das anpassen, dass wenn neue Datensätze reinkommen es weiterhin funktioniert.
Wie gesagt ich verstehe da leider nicht viel von deshalb weiss ich nicht woran es hakt... Sorry wenn es so offensichtlich ist ^^
VIELEN DANK für jegliche Hilfe!
LG Yuki!
Hier das bisherige Makro:
Sub DatenKopieren()
l_z = 1
l_ende = 0
l_pfad = ActiveWorkbook.Path
l_seite = "Rohdaten"
l_steuerung = "Steuerung"
l_spalte = 2
ActiveWorkbook.Save
Sheets(l_seite).Select
Range("A" & l_z).Select
Selection.AutoFilter
Do
l_z = l_z + 1
Sheets(l_steuerung).Select
Range("A" & l_z).Select
l_vz = ActiveCell
If l_vz = "" Then
l_ende = 1
Else
Sheets(l_seite).Select
Selection.AutoFilter Field:=l_spalte, Criteria1:=l_vz, Operator:=xlAnd
Range(Selection, Selection.End(xlDown)).Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
l_pfad & "\" & l_vz & ".xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
ActiveWindow.Close
Sheets(l_steuerung).Select
Range("B" & l_z).Select
ActiveCell.FormulaR1C1 = "Fertig!"
End If
Loop Until l_ende = 1
L_1 = MsgBox(("Dateien sind erstellt!"), vbExclamation + vbOKOnly, "Bin Fertig!")
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 305531
Url: https://administrator.de/contentid/305531
Ausgedruckt am: 23.11.2024 um 03:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo yuki,
Fange erstmal folgendermaßen an:
Bearbeite den Titel deiner Frage, sodass er etwas aussagekräftiger wird. So finden potenzielle Beantworter ihren Weg hierhin.
Prüfe, ob die Beschreibung deiner Frage auch für jemanden verständlich ist, der dein Tabellenblatt nie gesehen hat.
Verwende Code Tags, Umbrüche und was sonst noch beim Lesen hilft.
Ich persönlich verwtehe nicht ganz, was du zu beschreiben versuchst und empfinde den Codeausschnitt als sehr unübersichtlich.
Danke
Beste Grüße
Dominique
Fange erstmal folgendermaßen an:
Bearbeite den Titel deiner Frage, sodass er etwas aussagekräftiger wird. So finden potenzielle Beantworter ihren Weg hierhin.
Prüfe, ob die Beschreibung deiner Frage auch für jemanden verständlich ist, der dein Tabellenblatt nie gesehen hat.
Verwende Code Tags, Umbrüche und was sonst noch beim Lesen hilft.
Ich persönlich verwtehe nicht ganz, was du zu beschreiben versuchst und empfinde den Codeausschnitt als sehr unübersichtlich.
Danke
Beste Grüße
Dominique
Hallo Yuki!
Hier mal ein Beispiel für dein Vorhaben so wie ich es anhand deiner knappen Informationen interpretiert habe:
FilterDataAndCreateWorkbooks_305531.xlsm
Hier noch der kommentierte Code aus dem Demo-Sheet:
Grüße Uwe
Hier mal ein Beispiel für dein Vorhaben so wie ich es anhand deiner knappen Informationen interpretiert habe:
FilterDataAndCreateWorkbooks_305531.xlsm
Hier noch der kommentierte Code aus dem Demo-Sheet:
Sub FilterAndCopyData()
Dim wsList As Worksheet, wsData As Worksheet, strExportPath As String, strFilename As String, fso As Object, intColumn As Integer
'Sheets festlegen
Set wsList = Sheets("Steuerung")
Set wsData = Sheets("Rohdaten")
'Exportpfad für die Dateien
strExportPath = ThisWorkbook.Path
'Objekte
Set fso = CreateObject("Scripting.FileSystemObject")
Application.DisplayAlerts = False
Application.ScreenUpdating = False
With wsList
For Each cell In .Range("A2:A" & .Cells(Rows.Count, "A").End(xlUp).Row)
'Wenn Name in der Liste noch nicht bearbeitet wurde ...
If cell.Value <> "" And cell.Offset(0, 1).Value = "" Then
With wsData
'AutoFilter zurücksetzen
.UsedRange.AutoFilter
'Lege Suchspalte fest je nachdem ob es eine Kundennummer(Numerisch) ist oder nicht (Name)
intColumn = IIf(IsNumeric(cell.Value), 3, 1)
' Nur wenn Daten des Users vorhanden
If Not (.Columns(intColumn).Find(cell.Value)) Is Nothing Then
'Filtere die Datentabelle anhand des Namens/Kundennummer
.UsedRange.AutoFilter intColumn, cell.Value
'Kopiere nur die Sichtbaren zellen der Liste
.UsedRange.SpecialCells(xlCellTypeVisible).Copy
With Workbooks.Add
'Inhalt in neues WB einfügen
.Sheets(1).Range("A1").PasteSpecial xlPasteValues
'Spalten an Inhalt anpassen (optische Hilfe)
.Sheets(1).UsedRange.EntireColumn.AutoFit
'Exportdateiname
strFilename = strExportPath & "\" & cell.Value & ".xlsx"
' Wenn Datei noch nicht existiert Speichere und schließe das neue Workbook, ansonsten
' frage nach ob sie überschrieben werden soll
If Not fso.FileExists(strFilename) Then
.SaveAs strFilename
.Close True
Else
If MsgBox("Datei '" & strFilename & "' existiert bereits. Soll sie überschrieben werden?", vbExclamation Or vbYesNo) = vbYes Then
.SaveAs strFilename
.Close True
Else
.Close False
End If
End If
End With
End If
End With
' Notiere den Status des Namens in der Liste
cell.Offset(0, 1).Value = "Fertig."
End If
Next
End With
'cleanup
Set fso = Nothing
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Fertig", vbInformation
End Sub