E-Mail zerlegen und in Excel darstellen

  • Excel

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Was passiert denn in dieser Zeile

    Visual Basic-Quellcode

    1. ​ActiveWorkbook.Connections("Abfrage - Mail").Refresh

    Wird hier eine PowerQuery Abfrage aktualisiert? Was wird in der Abfrage gemacht?

    Ich denke, die Lösung könnte ggf. mit PowerPivot und der DAX-Funktion CONCETANTREX ohne VBA umgesetzt werden.


    Dein VBA-Code bedeutet doch, dass Du jedes mal alle Zellen neu schreiben musst oder?
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).

    Riley schrieb:

    Meine Funktion schreibt dann zwar für das Item eine Zeile für das Update oder die Rectifications, dann aber deutlich weiter unten in der Tabelle.
    Ich möchte also, dass erkannt wird, dass es sich um das selbe Projekt handelt und alle Statusinformationen mit Zeilenumbruch in dieselbe Zeile gepackt werden.

    Variante 1: Du sortierst die Tabelle anschließend nach Projektnummer.
    Variante 2: Du suchst beim Eintrag nach der Projektnummer und wenn der Eintrag existiert, hängst du die Daten hinten dran.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Wird hier eine PowerQuery Abfrage aktualisiert? Was wird in der Abfrage gemacht?​


    Hier wird die Verbindung zum Mailserver aktualisiert und die Datenquelle (das Mailpostfach) abgefragt.

    ​Dein VBA-Code bedeutet doch, dass Du jedes mal alle Zellen neu schreiben musst oder?


    Die Rohdaten sind in einem Excelsheet, die Abfrage aktualisiert diese und fügt neue hinzu und dann wird daraus meine Übersicht generiert. Könnte man bestimmt besser lösen, aber wir reden hier nicht von allzu vielen Einträgen, von daher vernachlässigbar, denke ich.

    ​Variante 1: Du sortierst die Tabelle anschließend nach Projektnummer.

    Ist das in VBA zu realisieren? Zurzeit benutze ich einfach den Filter von Excel und sortiere damit, aber es wäre natürlich eleganter (da es auch andere benutzen sollen), wenn direkt sortiert wäre und eine Zeile pro Projekt

    Variante 2: Du suchst beim Eintrag nach der Projektnummer und wenn der Eintrag existiert, hängst du die Daten hinten dran.​


    Selbes Spiel, wie mache ich das in VBA? Das wäre auch meine Idee gewesen, das Array nach Dopplungen zu durchsuchen und dann wenn zwei mal oder öfter "ProjektXX" auftaucht, das in eine gemeinsame Zeile schreiben zu lassen. Ich weiß nur leider nicht, wie ich das realisiere.

    Riley schrieb:

    Ist das in VBA zu realisieren?
    Mit Range.Sort

    Riley schrieb:

    eine Zeile pro Projekt
    Das wird schon schwieriger, da du j a einzelne Zellinhalte verändern musst, um mehrere Zellen in eine zusammenfassen.

    Riley schrieb:

    das Array nach Dopplungen zu durchsuchen
    Da hilft dir Range.Find

    Dein Code ist relativ umständlich und schon gar nicht objektorientiert.
    Das schreckt mich ein wenig davor ab, dir direkte Änderungen an deinem Code vorzuschlagen.
    Wenn ich so was im Job zur Überarbeitung in die Hand bekomme, werfe ich es weg und schreibe es neu.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Vielen Dank für die Hilfe, ich werde dann wohl versuchen, zumindest die Projekte in einzelnen Zeilen untereinandergeschrieben hinzubekommen.
    Ich habe den Code auch so bekommen und leider wenig bis keine Ahnung von VBA, neu schreiben ist daher keine Option.

    Vollzitat entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Mit Range.Sort​


    Habe rumprobiert, aber kriege nicht wirklich raus, wie ich damit die Projekte sortieren kann.
    Also die Initiierung, Update und Rectification fangen immer mit der Projektnummer_Jahr an, danach würd ich entsprechend gern sortieren. Dann wären zumindest die Projekte in Zeilen untereinander sortiert, das würde schon reichen.
    Kannst du mir sagen, wie ich das in meine Funktion einbauen könnte? Lasse ich meinen Code laufen, um die Tabelle zu bauen und mache danach dann Range.Sort auf die Spalte der Projektbezeichnung? Steige da leider nicht ganz durch, sorry.
    Auch wenn der Code wie du sagst nicht sonderlich schön ist, wäre das alles und das Makro würde seinen Zweck erfüllen. Objektorientiert und generell besser geschrieben übersteigt leider meine Fähigkeiten, auch wenn mir das natürlich lieber wäre.

    Gruß und vielen Dank für die Hilfe