freundeskreis81
Goto Top

Excel Makro erstellen zur Sortierung

Hallo Zusammen,

ich habe folgendes Problem und bin gänzlich Überfordert damit, wäre Super wenn Ihr mir helfen könntet da ich mit Makros definitiv nichts zu tun habe:

Folgendes Szenario:

Ich habe eine Excel mit der Mappe "Zentral". Diese beinhaltet div. Infos über verschiedene Assets von PC´s.
PC Nummer, SN Nummer, Standort etc.

Ich benötige jetzt allerdings ein Makro das mir die Standorte sortiert und Automatisch nach Namen des Standortes neue Mappen Anlegt.
Die Design der Zentralen Mappe sollte allerdings übernommen werden.

Daraufhin sollte das Makro mir die unterschiedlichen Mappen einzeln als XLS Datei unter einem bestimmten Pfad speichern.

Ich hoffe ich habe mich klar und deutlich ausgedrückt?! ;)

Über Hilfe wäre ich echt Super erfreut.
Vielen Dank.

Content-ID: 171314

Url: https://administrator.de/contentid/171314

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

mathe172
mathe172 11.08.2011 um 17:43:15 Uhr
Goto Top
Hallo,

vielleicht könntest du mal versuchen, mit Makro aufzeichnen einige Code-Fragmente zu bekommen, die von dir (oder wahrscheinlich auch jemandem hier im Forum face-wink) zusammengesetzt werden können.

Ich würde zum Beispiel etwa so vorgehen:
  • Zeile für Zeile abarbeiten und in eine Tabelle kopieren, die als Namen den Standort hat
      • Existiert so eine Tabelle nicht, erstelle eine neue und kopiere die Zeile dahin (wenn das Design übernommen werden soll, versuch mal herauszufinden, was dir Excel für einen Code ausspuckt, wenn du die Zeile markierst und mit Formatieung irgendwo wieder einfügst)
  • Sind alle Zeilen durchgearbeitet, müssen die Tabellen nur noch als einzellne Mappe gespeichert werden. (Vielleicht mal schauen wie man Tabellen in eine andere Arbeitsmappe verschiebt face-wink)

Ich hoffe ich konnte dir (und anderen face-smile) einen Denkanstoss geben. Vielleicht bastel ich ja (später) noch ein bisschen Code zusammen.

MfG,
Mathe172
Freundeskreis81
Freundeskreis81 12.08.2011 um 09:18:27 Uhr
Goto Top
Sub Makro2()
'
' Makro2 Makro
'

'
ActiveSheet.Range("$A$11:$G$33").AutoFilter Field:=6, Criteria1:= _
"Moekmuehl"
Sheets("Zentral").Select
Sheets("Zentral").Copy After:=Sheets(1)
Sheets("Zentral (2)").Select
Range("F26").Select
ActiveCell.FormulaR1C1 = "Moekmuehl"
With ActiveCell.Characters(Start:=1, Length:=9).Font
.Name = "Calibri"
.FontStyle = "Standard"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Range("F35").Select
Sheets("Zentral (2)").Select
Sheets("Zentral (2)").Name = "Moekmuehl"
Range("B63").Select
Sheets("Zentral").Select
ActiveSheet.Range("$A$11:$G$33").AutoFilter Field:=6, Criteria1:="Zentral"
Range("F35").Select
End Sub


So in etwa sollte es aussehen. Nur das ich mehrer Standorte habe und ich eigentlich möchte das Excel diese Automatisch erkennt und dem Standort entsprechend dann eben die betroffenen Geräte in den dazugehörigen Standort übernimmt und dafür aber eine neue Mappe erstellt die auch gleich dem Standort entsprechend benamst werden soll...

Ich glaube ich möchte zu viel ;)

VG
Freundeskreis
mathe172
mathe172 12.08.2011 um 14:55:44 Uhr
Goto Top
Hallo,

versuch mal diesen Code:
Public Sub Sort()
    Dim Row As Integer, Row2 As Integer, SortCriterium As String
    Row = 1
    Sheets("Zentral").Activate  
    Do Until Cells(Row, 1).Value = ""  
        SortCriterium = Cells(Row, 3)
        If Not SheetExists(SortCriterium) Then
            Sheets.Add After:=Sheets(Sheets.Count)
            Sheets(Sheets.Count).Name = SortCriterium
        End If
        Sheets("Zentral").Activate  
        Rows(Row & ":" & Row).Select  
        Selection.Copy
        Sheets(SortCriterium).Activate
        Row2 = 1
        Do Until Cells(Row2, 1) = ""  
            Row2 = Row2 + 1
        Loop
        Rows(Row2 & ":" & Row2).Select  
        ActiveSheet.Paste
        Sheets("Zentral").Activate  
        Row = Row + 1
    Loop
    Dim objWorksheet As Worksheet
    For Each objWorksheet In ActiveWorkbook.Worksheets
        If objWorksheet.Name <> "Zentral" Then  
            objWorksheet.Select
            ActiveWorkbook.Windows(1).SelectedSheets.Copy
            Application.DisplayAlerts = False
            ActiveWorkbook.SaveAs objWorksheet.Name
            Application.DisplayAlerts = True
            ActiveWorkbook.Close
        End If
    Next
End Sub

Public Function SheetExists(Worksheetname As String) As Boolean
Dim objWorksheet As Worksheet
  For Each objWorksheet In ActiveWorkbook.Worksheets
    If objWorksheet.Name = Worksheetname Then SheetExists = True: Exit For
  Next
End Function

Wenn was nicht passt, meld dich einfach face-smile

MfG,
Mathe172
Freundeskreis81
Freundeskreis81 15.08.2011 um 13:04:48 Uhr
Goto Top
erst vielen Dank für Deine Mühe...

leider tut sich da ger nichts wenn ich das Makro ausführe..??! Nicht mal eine Meldung.
Muss ich was beachten?!

gruß
Freundeskreis81
mathe172
mathe172 15.08.2011 um 13:56:21 Uhr
Goto Top
Hallo,

gibt es wirklich keine neuen Tabellen und Dateien?
In welchen Spalten sind denn die Daten? Das obige Script verarbeitet immer ganze Zeilen, aber nur solange, bis eine Zeile auftaucht, bei der die erste Spalte leer ist.

MfG,
Mathe172