Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1936to1940
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
Exceldatei zeilenweise abspeichern
11.07.2023 15:40:22
Ennemann35
Hallo Leute!
Ich verzweifel an einem Problem: Ich habe eine Excel-Datei mit mehreren Tausend Zeilen. Ausschnittsweise hier als Upload:
https://www.herber.de/bbs/user/159895.xls

Ich möchte daraus einige Hundert Mails automatisiert versenden. In jeder Mail sollen als Anhang die dem Markt zugeordneten Zeilen zwischen den schwarzen Balken angehängt sein. Welcher Markt welche Zeilen bekommt, wird über die R-ON in Spalte E definiert.
Heißt:
Markt 1 "Bersiznski" gehört zu R-ON 10345 und soll als Excel Anhang die Zeilen 1 (Überschrift) sowie 2-8 erhalten.
Markt 2 "Tietz" gehört zu R-ON 10351 und soll als Excel Anhang die Zeilen 1 (Überschrift) sowie 10-14 erhalten.
...
Das geht so weiter bis zu Markt 200 circa.

Wie bekomme ich per Formel/Power Automate/Access oder VBA-Skript es so hin, dass aus dieser einzelnen Riesen-Datei mir viele kleine Dateien irgendwo abgelegt werden, sodass ich diese dann per Serienmail automatisiert an die jeweiligen Empfänger versenden kann? Ich bin Excel-Neuling und VBA-mäßig null versiert.
Habe mich mit Power Automate daran versucht, aber es scheitert daran, es als Excel Anhang und nicht als Text in einer Mail darzustellen (zu unleserlich).

Danke für jede Hilfe! :)

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rewe? Auftragsarbeit
11.07.2023 15:57:11
Ennemann35
Hallo Fennek,

danke für den Hinweis, kannte ich noch nicht. Werde einmal dort hin schreiben.
Falls dennoch jemand einen Rat für mein Problem hat, bin ich sehr dankbar!

LG

AW: Exceldatei zeilenweise abspeichern
11.07.2023 16:23:34
Daniel
Hi
idieses Makro zerlegt dir deine Liste in einzelne Dateien nach Spalte E
dim Zelle1 as range
dim Zelle2 as range
dim wb as workbook
with sheets ("Marktliste")
    set Zelle2 = .cells(1, 5)
    .usedrange.Sort Key1:=Zelle2, order1:=xlascending, header:=xlyes
    do
        set Zelle1 = Zelle2.Offset(1, 0)
        if Zelle1.value = "" then exit do
        Set Zelle2 = Zelle1.Entirecolumn.Find(what:=Zelle1.value, lookat:=xlwhole, lookin:=xlvalues, searchdirection:=xlprevious)
        set wb = workbooks.add(xlWBATWorksheet)
        .Rows(1).Copy Destination:=wb.Sheets(1).Cells(1, 1)
        Range(Zelle1, Zelle2).EntireRow.Copy Destination:=wb.Sheets(1).Cells(2, 1)
        wb.Saveas Thisworkbook.Path & "\" & Zelle1.value, xlOpenXMLWorkbook
        wb.close
    loop
end with
Gruß Daniel
ps. code nicht getestet, dh Tippfehler o.ä. bitte selber korrigieren

Anzeige
AW: Exceldatei zeilenweise abspeichern
11.07.2023 22:52:50
Ennemann35
Hallo Daniel,

danke für den Code - ich bin leider nicht fähig ihn auszuführen. Nachdem ich ihn über VBA-Editor -> Einfügen -> Modul eingefügt habe, ist er unter "Makros" nicht auffindbar. Was mache ich falsch?

Danke und LG!

AW: Exceldatei zeilenweise abspeichern
12.07.2023 00:31:12
Ennemann35
Update: War nach einiger Internetrecherche doch erfolgreich - Mega Sache!!

Eine Nachfrage noch: Was muss ich in dem Code ändern, wenn nicht die erste, sondern die ersten beiden Zeilen bei jedem Dokument übernommen werden sollen?
Hatte bei der Testdatei die ich hier hochgeladen hab oben was weggenommen (Erklärung der einzelnen Spalten für die Empfänger).
Anbei nochmal ein neues File mit den zwei Zeilen.
https://www.herber.de/bbs/user/159902.xls

Wär super, wenn das geht, aber auch kein Beinbruch wenn nicht - bin dir so schon sehr dankbar Daniel.

LG

Anzeige
AW: Exceldatei zeilenweise abspeichern
12.07.2023 13:38:10
Daniel
wenn die ersten beiden Zeilen kopiert werden sollen, dann ersetze das
.Rows(1).Copy Destination:=wb.Sheets(1).Cells(1, 1)
durch
.Range("1:2").Copy Destination:=wb.Sheets(1).Cells(1, 1)
Gruß Daniel

AW: Exceldatei zeilenweise abspeichern
12.07.2023 17:01:13
Ennemann35
Hallo Daniel,
mein Code sieht jetzt so aus - leider ändert sich zum vorherigen Makro nichts. Weiterhin wird nur die erste Zeile übernommen. :(

Sub EinzelnSpeichernV2()


Dim Zelle1 As Range
Dim Zelle2 As Range
Dim wb As Workbook
With Sheets("Marktliste")
    Set Zelle2 = .Cells(1, 5)
    .UsedRange.Sort Key1:=Zelle2, order1:=xlAscending, Header:=xlYes
    Do
        Set Zelle1 = Zelle2.Offset(1, 0)
        If Zelle1.Value = "" Then Exit Do
        Set Zelle2 = Zelle1.EntireColumn.Find(what:=Zelle1.Value, lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlPrevious)
        Set wb = Workbooks.Add(xlWBATWorksheet)
        .Range("1:2").Copy Destination:=wb.Sheets(1).Cells(1, 1)
        Range(Zelle1, Zelle2).EntireRow.Copy Destination:=wb.Sheets(1).Cells(2, 1)
        wb.SaveAs ThisWorkbook.Path & "\" & Zelle1.Value, xlOpenXMLWorkbook
        wb.Close
    Loop
End With

End Sub
LG

Anzeige
AW: Exceldatei zeilenweise abspeichern
12.07.2023 17:33:55
Daniel
Hi
Check doch mal das Ziel (=Destination), wo du die Kopierten Daten dann einfügst.
Fällt dir was auf?
"Cells()" ist eine Zelle und die Zahlen in den Klammern geben dann die Zeilennummer und die Spaltennummer dieser Zelle an.

Gruß Daniel

AW: Exceldatei zeilenweise abspeichern
12.07.2023 23:25:59
Ennemann35
Hallo Daniel,

danke für den Tipp. Aber ich blicke bei VBA leider gar nichts. Auch nachlesen bringt mich nicht weiter. Meine Versuche liefen immer auf einen der vielen Fehler hinaus (Syntax, Laufzeitfehler etc.). Wenn du auflösen kannst, gerne!

LG

AW: Exceldatei zeilenweise abspeichern
13.07.2023 09:20:35
Daniel
wenn du bei VBA gar nichts blickst, dann solltest du vielleicht vorerst noch abstand davon nehmen, dieses im beruflichen Umfeld zu nutzen.
Bedenke, wenn du dir Makros aus dem Internet kopierst, du für deinen Kunden/Auftraggeber der Ersteller und damit der Verantwortliche bist, dass alles korrekt funktioniert. Von daher empfehle ich, im beruflichen Umfeld nur die Sachen zu verwenden, die man versteht im im Bedarfsfall auch selber warten kann.

denn eigentlich ist das Problem doch ganz einfach:
wenn die Überschrift, die du kopierst, zwei Zeilen hat, dann dürfen die weiteren Daten nicht in Zeile 2 eingefügt werden, sondern in in Zeile 3, weil du dir ja sonst die zweite Zeile der Überschrift überschreibst.
das kopieren und Einfügen der Daten passiert in dieser Zeile, und daher muss man hier als Zielzelle für das Einfügen die Zelle A3 angeben und nicht A2:
Range(Zelle1, Zelle2).EntireRow.Copy Destination:=wb.Sheets(1).Cells(3, 1)
und auch der Startpunkt für Zelle2 muss dann auf Zeile 2 gesetzt werden, also eine Zeile überhalb der eigentlichen Daten:
Set Zelle2 = .Cells(2, 5)

weitere Fehler konnte ich in meinem Code nicht entdecken.
Da müsstest du uns schonmal deinen Code mit deinen Daten zeigen, mit dem die Fehler passieren.
Gruß Daniel

Anzeige
AW: Exceldatei zeilenweise abspeichern
13.07.2023 11:09:05
Ennemann35
Hallo Daniel,

es funktioniert - ich bin begeistert!
Ich möchte das Forum hier nicht missbrauchen, damit andere Leute meine Arbeit machen - aber ich habe einfach nicht den großen Bedarf im Arbeitsalltag für VBA. Daher knie ich mich nicht zu tief in die Materie rein. Vielleicht in Zukunft ;)

Dein Hinweis, dass Makros auch Schaden anrichten können nehme ich mir aber zu Herzen. Hatte den Code auch vorab in unbedenklicher Umgebung getestet.

Ich wünsche eine gute Restwoche!
Ennemann35

Anzeige
nur ne Anmerkung
11.07.2023 21:23:01
Rudi Maintaire
Hallo,
komplett leere Zeilen (die schwarzen) oder Spalten haben in Listen absolut nichts zu suchen!

Gruß
Rudi

245 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige