Outlook 2003 Formular mit Eingabefeldern?

Holger-4C

Lt. Junior Grade
Registriert
Jan. 2005
Beiträge
296
Hallo zusammen,

ich habe folgendes Problem:

In meinem Job müssen wir täglich mehrere Mails bezüglich des Arbeitsstandes verschicken.
Dies erledigen wir via Outlook (2003). Die jeweiligen Werte sind natürlich von Tag zu Tag unterschiedlich, weshalb wir die Mail (ich selbst habe mir ein Formular erstellt <- ist jedoch auch noch nicht das Gelbe vom Ei) jeden Tag verändern müssen.
Zudem verschicken wir aufsetzend auf diese Mail 2 Zwischenstandsmeldungen.

Mir ist jetzt die Frage gekommen, ob man die Veränderbarkeit der Mail nicht auf wenige Felder beschränken kann.

Hier ist die tägliche Mail als Muster:
+++++++++++
Liebe Kolleginnen und Kollegen,

aus unserer heutigen Tageslieferung von x.xxx Potentialen ergeben sich folgende Zielwerte:

x.xxx,xx RRV
x.xxx,xx NPS-Werte
x.xxx,xx Nettokontakte

Gestern haben wir folgendes Ergebnis erreicht:

RRV x.xxx,xx gleich xx% - davon xx durch KDM und xxx durch Unterstützer -
NPS-Werte x.xxx,xx gleich xx% - davon xx durch KDM und xxx durch Unterstützer -
Nettokontakte x.xxx,xx gleich xx% - davon xx durch KDM und xxx durch Unterstützer -

Die NPS-Gesamtproduktivität lag bei xx,xx Netto/h bei einer Verweigererquote von xx,xx%
+++++++++

Besteht die Möglichkeit mittels VBA oder was auch immer die "x.xxx,xx" Bereiche via Formular oder ähnlichem füllen zu lassen?
Der Benutzer trägt also quasi die Werte in ein Freifeld ein und dieser wird in die vorformulierte Mail übernommen.
Die %-Berechnung automatisiert ablaufen zu lassen, auch wieder mittels Formular oder ähnlichem, wäre natürlich sehr praktisch.

Über Hilfen, Anmerkungen oder auch Verweise auf anderen Foren freue ich mich.
 
Keine Ahnung ob das direkt in Outlook geht, ich würde das einfach in Excel machen.

Eine Tabelle mit einer Zeile pro Tag, in der die Werte eingetragen werden. Via VBA aus Excel dann nach Outlook exportieren.
 
Zuletzt bearbeitet:
Ok, damit kann ich theoretisch schon einmal was anfangen. Mein Problem an dieser Stelle ist nun, dass meine VBA Kenntnisse nicht einmal als rudimentär zu bezeichnen sind.
Ist der Code sehr aufwändig?
Gibt es hier ein Grundgerüst?

Unsere IT-Abteilung brauche ich in der Zentrale damit nicht behelligen, an unserem Standort weiß ich nicht ob jemand in VBA "programmieren" kann.
Ich kläre das morgen mal ab.

Wenn Du natürlich Lust und Laune hast... :-)
Aber Vorsicht, reiche ihm den kleinen Finger usw.

Ich lobe aber ein Kölsch einzunehmen in Köln für einen freundlichen Unterstützer aus. Dürfen dann aber auch zwei Kölsch werden!
 
Das Aufwändigste war das Formular, nicht der Code dahinter ;)

Schwer ist es im Grunde nicht - ich hab mir das auch nur alles durch learning by doing beigebracht; den Rest findet man bei Google.

Wenn du mir genau sagst, was du haben willst, kann ich dir das basteln (wenns meine Fähigkeiten zulassen).
Evtl. krieg ich das sogar nur in Outlook hin.
 
Zuletzt bearbeitet:
Hallo,

ich werde mir am Wochenende (jaja, man nimmt die Arbeit gedanklich mit nach Hause) einen Text inkl. Darstellungen überlegen und Dir dann per pm schicken sofern es für Dich ok ist.

Wenn Du Zeit und Lust haben solltest Dich daran zu versuchen würde es mich freuen. Wenn nicht, stehe ich mich ja auf jeden Fall nicht schlechter als bisher :-)
 
Wenn du noch Fragen hast, einfach hier rein; PNs hab ich nicht aktiviert.
 
Hey,

irgendwie ist Aufgrund einer Prioritätenverschiebung das Thema nicht mehr ganz so aktuell gewesen... Da ich gerade etwas Luft habe, würde ich Dein Angebot dennoch gerne in Anspruch nehmen, sofern es noch steht.

Wenn nicht, dann könnte ich es durchaus verstehen (sofern Du den Thread überhaupt noch entdeckst, bzw. Dich daran erinnerst...)

Anbei mal zwei Dateien mit denen wir arbeiten.

Damit Du Dich nicht noch inhaltlich in unsere Thematik einarbeiten "musst", folgende Infos:

Wir brauchen aus der Excel-Datei die Ist-Daten Gesamt inklusive der jeweiligen Zielerreichungen.
Im Nachgang sollen die jeweiligen unterstützenden Gruppen (Aushilfen und KDM) noch mit den jeweiligen Ist-Werten ausgewiesen werden.

Die Excel-Tabelle wird von uns jeden morgen mit den Vortageswerten gefüllt und kann auch direkt mit den Sollwerten des aktuellen Tages befüllt werden.
Sofern möglich, sollte der Export nach Excel dann auf zwei Zeilen zugriff nehmen und insgesamt auf mehrer Felder. Die Felder als solche würden sich natürlich von Tag zu Tag in den Zeilen verschieben, die Spalten würden aber immer die gleichen bleiben.

So... jetzt bin ich mal gespannt. Wenn Du etwas nicht verstanden haben solltest, dann lass es mich wissen.

Gruß und Danke für Deine Zeit!
 

Anhänge

Du hast also eine Tabelle wie in deinem zweiten Bild und daraus sollen (täglich) aus der letzten Zeile bestimmte Zellen nach Outlook exportiert werden?

D.h. du brauchst kein Formular in Excel, sondern trägst die Daten dort einfach ein und bspw. über eine Schaltfläche werden dann die jeweiligen Zellen in eine Mail übertragen!?
 
Aus der Excel-Datei sollen für die Zielerreichung die Vortageswerte übernommen werden.
Die Tages-Sollwerte sollen ebenfalls über diese Datei "gezogen" werden.

Konkretes Beispiel (Vorraussetzung: Wir haben heute den 11.07.):
Wir möchten morgens die Zielemail schreiben.
Per Mausklick soll sich Outlook die Ist-Werte des Vortages inklusive der %-Zahlen aus Gesamt ziehen. Je nach Zeile (also RRV, NPS oder Netto) soll nach abgeglichen werden ob die Einheiten "Aushilfen", "KDM gesamt" Ist-Werte produziert haben und wenn ja, sollen diese dort ausgewiesen werden.

Wir haben immer noch den 11.07. und morgens stehen natürlich nur ganz links die Werte für "Netto Soll", "NPS Soll" und "RRV Soll" und sollen ebenfalls in die Mail (der erste Teil) übernommen werden.

Ist das für Dich verständlich? Wenn nein könnte man über das Problem auch mal kurz telefonieren. Ist meist einfacher als lediglich per Email zu kommunizieren. Natürlich nur wenn es nicht ganz klar wurde und Du damit kein Problem hast.

Gruß
Holger
 
Mir ist nur nicht ganz klar, aus welcher Zeile deine Zahlen genommen werden sollen.

Die Zahlen aus dem oberen Teil deiner Mail sind von heute (= letzte Zeile in der Tabelle).
Die Zahlen darunter, sind in deinem Screenshot auch aus der letzten Zeile, sollten aber doch aus der vorletzten Zeile sein (= gestern)?

Am einfachsten wäre es, wenn du eine Exceldatei hochladen kannst (gezippt), und dazu schreibst, welche Zelle wo in deiner Mail eingefügt werden soll.
 
Ok, mache ich dann morgen nach 12 Uhr. Ist dann auch ein Auszug aus der Originaldatei.
Ergänzung ()

Hallo,

anbei die Datei. Ich möchte folgendes via Script aus der Datei in eine Outtlookmail (ggf. in ein Formular oder wie auch immer die Lösung aussieht) automatische übernehmen lassen.

Unsere Mail sieht ja wie folgt aus:

Liebe Kolleginnen und Kollegen,

aus unserer heutigen Tageslieferung von 2.242 Potentialen ergeben sich folgende Zielwerte:
151,61 RRV
635,73 NPS-Werte
1. 062,01 Nettokontakte

Gestern haben wir folgendes Ergebnis erreicht:
RRV 122 gleich 76% - davon 9 durch KDM und 52 durch Unterstützer -
NPS-Werte 429 gleich 66% - davon 115 durch KDM und 115 durch Unterstützer -
Nettokontakte 818 gleich 74% - davon 225 durch KDM und 212 durch Unterstützer -
Die NPS-Gesamtproduktivität lag bei 9,25 Netto/h bei einer Verweigererquote von 37,67%

Anforderung:
Aus Excel soll für den rot markierten Teil die Spalten D-F aus der Zeile 678 übernommen werden. Also für das Tagessoll
- RRV F678
- NPS-Werte E678
- Nettokontakte D678

Für die Ergebnisse von gestern sollen folgende Spalten/Zeilen gezogen werden:
- RRV I677 gleich M677 - davon AH677 durch KDM und P678 durch Unterstützer
- NPS-Werte H677 gleich L677 - davon AG677 durch KDM und O677 durch Unterstützer
- Nettokontakte G677 - davon AF677 durch KDM und N677 durch Unterstützer

Gesamtproduktiviät und Verweigererquote finden sich noch nicht in dieser Tabelle wieder, könnten aber auch noch eingefügt werden. Ich denke, wer A sagt muss auch B sagen?!

Noch eine Frage von mir:
Wenn wir z.B. ein drittes Lehrjahr KDM2012 bekommen, können wir dieses dann einfach in Excel nach KDM2011 einfügen oder würde das die VBA Programmierung zerschießen? Kann man so etwas "dynamisch" gestalten, heißt ich verschiebe einen Bereich in Excel und die VBA Programmierung berücksichtigt dies automatisch?

Wenn das nicht geht, würde uns die Programmierung anch dem Ist Stand ausreichen, wobei eine Berücksichtigung der KDM2012 im Vorfeld wäre sinnvoller, da diese ohnehin ab Ende des Jahres produktiv arbeiten werden.

Kommst Du mit meinen/unseren Anforderungen jetzt besser klar?

Gruß und noch einmal Danke, dass Du Dich überhaupt mit dem Problem befasst!
Holger
 

Anhänge

Naja, wenn man mal verstanden hat, was wohin soll, ist das ganze ne Sache von 10 Minuten ;)


3 Sachen fehlen noch:
  • woher kommt die Tageslieferung (2242)?
  • woraus berechnen sich die NPS-Gesamtproduktivität und die Verweigererquote? Man kann einfach prüfen, ob die für die Berechnung notwendigen Zahlen in der Tabelle eingetragen sind, und falls ja, den Text in die E-Mail schreiben. wenn nicht, lässt man ihn eben weg.
  • zu deiner Frage wegen eines zusätzlichen Lehrjahres. Du meinst, weil sich dann die Spalten AF-AH ändern? Das kann man abfangen: bspw., weil die drei Spalten von rechts gezählt immer die 7.-9. letzte Spalte sind. Oder man sucht nach der Spalte, in der "KDM Gesamt" steht, oder man vergibt Bereichsnamen, oder ... Man muss nur etwas nehmen, was sich nicht ändert bzw. nach dem man suchen kann.
 
Die Tageslieferung wird von uns (wie alle andern Werte bisher auch) noch manuell eingetragen. Wir erhalten sämtliche werte durch eine Intranetbasierte Anwendung (namentlich WebCC).
Die Tageslieferung kann ich aber auch noch in die Tabelle einfügen, wäre dann die vor dem Netto-Soll, sprich die neue D Spalte.

Die NPS-Gesamtproduktivität entnehmen wir aus einem Bericht aus diesem WebCC. Könnten ihn entweder auch als Wert eintragen oder aber berechnen lassen:
"Login Gesamt" / 60 = x
Netto Ist / x = Gesamtproduktivität.
Habe es jetzt mit 3 Werten nachgerechent und nur einmal gab es eine Nachkommaabweichung. Die Verweigererquote kann ich nicht automatisch berechnen lassen, diesen Wert müssten wir konsequenterweise auch noch in die Tabelle einfügen.
AF-AH würde sich nicht ändern, wir würden das Lehrjahr dann einfach zwischen KDM2011 und KDM Gesamt einfügen.

Das Lehrjahr "KDM" selbst fällt im Juni nächsten Jahres weg, würde dann aber stehen bleiben und von uns nur ausgeblendet werden.

Ich habe Deine Datei mal aufgemacht und ja, genauso habe ich mir das vorgestellt. Ich werde die Datei einfach noch ergänzen und Dir dann morgen mal aktualisiert zur Verfügung stellen, wenn das für Dich ok ist?

*Edit*
Ist Durch dein Script denn gewährleistet, dass er sich quasi an bereits "gezogene" Daten erinnert und am nächsten Tag eine Zeile nach unten rutscht?
 
Zuletzt bearbeitet:
Immer her damit.

Das Script sucht aktuell in Spalte D nach der letzten Zeile. D.h. solange dort immer die Zeile zum aktuellen Tag steht, werden eben die Werte in dieser Zeile als "heute" und die Zeile darüber als "gestern" angesehen.

Wenn in Spalte D beim heutigen Tag also noch nichts steht oder weiter unten in der Spalte irgendetwas anderes, dann würde das Script Unsinn fabrizieren.

Man könnte auch das heutige Datum in Spalte C suchen und dadurch die Zeile ermittelten. Das kann aber Probleme geben, wenn jemand ein englisch eingestelltes Excel verwendet.

Meine Methode ist am simpelsten, man muss sich halt dran halten, das alles korrekt eingetragen wird (ob man dann Spalte D als Referenz nimmt oder eine andere, ist egal).
 
Hallo,

hier mal die neue Datei.
Ich habe jetzt noch die Tageslieferung, die Verweigererquote (VWQ) und die Produktivität eingefügt. Könntest Du das noch in das Script basteln?

Wie bekomme ich Dein Script denn aus Deiner Datei in unsere?
Ich habe Dir, für den Zweck auch gänzlich ausreichend, nur das erste Tabellenblatt zugeschickt. Anhand diesem schreiben wir ja diese morgendliche Mail.
Es gibt in unserer Originaldatei aber noch andere Blätter, die ziehen sich ihre jeweiligen Werte aus diesem einzigen Tabellenblatt.
Wenn Ich Dein Script in unsere Datei einfüge sollte es doch keine Probleme geben oder? Dein Script kann ja nur auf das Tabellenblatt "Eingabeliste" zugreifen...

Wie kann ich mir das Script denn in VBA angucken? Habe auf die Schnelle gerade nichts gefunden.

*Edit*
Ich habe jetzt noch das Ausbildungsjahr ergänzt, diese könnten wir ja bis Sie mittelefonieren einfach ausblenden. Für die Übernahme der Werte hast Du dich ja jetzt auf KDM gesamt bezogen oder?

Danke und Gruß!
Ergänzung ()

Was mir noch aufgefallen ist an Deinem bisherigen Script:

Bei der letzten Zeile (Nettokontakte) wird keine %-Zahl ausgewiesen.

Du hast die %-Zahlen in dem Tabellenblatt als normale Dezimalzahlen ausgewiesen. Ist dies nötig, damit das VBA Script die Werte übernehmen kann?

Desweiteren teilen wir in unseren Mails die %-Zahlen nur ganzzahlig aus, wir runden bei < ,5 ab und bei >= ,5 auf. Kannst Du das berücksichtigen?
 

Anhänge

Zuletzt bearbeitet: (Dateianhang ergänzt)
Das mit dem % muss irgendwo verloren gegangen sein; ist für VBA jedenfalls egal. Excels Rundenfunktion rundet automatisch bei >=,5 auf und bei <,5 ab.

AF-AH würde sich nicht ändern, wir würden das Lehrjahr dann einfach zwischen KDM2011 und KDM Gesamt einfügen.
Doch, AF-AH würde doch dadurch verrutschen auf AL-AN. D.h. so wie das Script aktuell ist, würde es dann nicht mehr funktionieren, da im Script eben AF/AG/AH steht. In deinem letzten Update ist es bspw. jetzt AO-AQ.
Für die Übernahme der Werte hast Du dich ja jetzt auf KDM gesamt bezogen oder?
Jein. Ich sage nur, nimm Spalte AF/AG/AH. Aktuell suche ich nicht nach "KDM gesamt" oder so (das wäre die umständlichste Lösung).


Wenn man sagt, man nutzt die 7.-9.-letzte Spalte, wäre das immer korrekt, auch wenn links von "KDM gesamt" noch was eingefügt wird (sofern rechts nicht auch mal Spalten eingefügt werden).

Wie bekomme ich Dein Script denn aus Deiner Datei in unsere?
Den VBA-Editor mit Alt + F11 öffnen. Im Projektexplorer (ggf. Strg + R) am linken Rand gibts im Ordner Modul das Modul Email (siehe Screenshot unten), da steht mein Macro drin. Über Rechtsklick darauf, kannst du das Macro exportieren und ebenso auch in ein anderes Excel importieren.
Wenn Ich Dein Script in unsere Datei einfüge sollte es doch keine Probleme geben oder? Dein Script kann ja nur auf das Tabellenblatt "Eingabeliste" zugreifen...
Jein. Solange die Tabelle nicht umbenannt wird, funktioniert es. Wenn sie umbenannt wird, klappts nicht mehr. Man kann auch VBA-interne Namen verwenden, die der normale User nicht verändert. Dann wäre ein Umbenennen des Arbeitsblattes egal - den internen Namen müsstest du aber in deinem *endgültigen* Excel noch definieren.
Theoretisch läuft das Macro korrekt, solange man das MAcro nur startet, wenn man sich auf dem Tabellenblatt Eingabeliste befindet; aber man weiß ja nie. Interne Tabellennamen sind eigentlich das beste.


Ich hab mal ein Screenshot angehängt und die für dich relevanten Teile markiert. Theoretisch (;)) kannst du da auch selbst rumbasteln. Im Grunde ist es nur statischer Text und Zellverweise:
Anhang anzeigen 290167

  • heute = ... ermittelt die letzte Zeile in Spalte D
  • gestern = ... ist eine Zeile über heute
  • Der ganze E-Mailtext folgt darunter: .Range(Spalte & heute/gestern) nimmt den Wert aus Spalte Spalte und Zeile heute (bzw. gestern)
    Normaler Text muss in "" angegeben werden, Zellverweise o.ä. wie .Range(Spalte & heute) müssen mit & verkettet werden.
Da du jetzt einige Spalten eingefügt hast, müssen im Makro alle Spaltenangaben (die rechts von der eingefügten Spalte stehen) korrigiert werden - du kannst ja mal testen, ob du das hinbekommst; ich guck heute Abend noch mal rein. Meine letzte Version hab ich nochmal angehängt.

Ansonsten wäre am Ende noch der Betreff und die E-Mailadresse der Empfänger interessant.
 
Und lange ruhte der See.

Dir erst einmal vielen Dank für die Arbeit und die Anregungen.

Wir (habe mir noch die Unterstützung eines Kollegen genommen) haben auf Deinem Code aufgesetzt. Jetzt haben wir noch eine Frage wie man Textstellen kursiv, fett oder gemäß der Outlookmöglichkeiten formatieren kann. Funktioniert das auch über VBA?

Habe Google mal befragt und z.B. folgendes gefunden:
Sheets("Drucken").Cells(25, 4).Font.Bold = True
oder
Sub Fett()
'z.B. so
ActiveCell.Value = "Herber ist toll"
ActiveCell.Font.Bold = True
'oder
Range("B30").Value = "Herber ist toll"
Range("B30").Font.Bold = True
End Sub

Jedoch möchte ich ja nicht in Excel die Zelle/Bereich fett schreiben sondern das Ganze in Outlook.
Hast Du, sofern Du das Thema noch verfolgst, eine Idee?

Nachfolgend unser Code, klappt super. Noch einmal Danke an dieser Stelle :-)




Sub create_email()

Dim olApp As Object
Dim olMail As Object
Dim sText As String

On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
On Error GoTo 0
If olApp Is Nothing Then
Set olApp = CreateObject("Outlook.Application")
End If

Set olMail = olApp.CreateItem(0)

heute = Range("D50000").End(xlUp).Row
gestern = heute - 1

sText = "Liebe Kolleginnen und Kollegen, " & vbLf & vbLf & _
"aus unserer heutigen Tageslieferung von " & Range("d" & heute) & " Potenzialen ergeben sich folgende Zielwerte:" & vbLf & vbLf & _
" " & Round(Range("G" & heute), 0) & " RRV" & vbLf & _
" " & Round(Range("F" & heute), 0) & " NPS-Werte" & vbLf & _
" " & Round(Range("E" & heute), 0) & " Nettokontakte" & vbLf & vbLf & _
"Gestern haben wir folgendes Ergebnis erreicht:" & vbLf & vbLf & _
"RRV " & Range("J" & gestern) & " gleich " & Format(Range("N" & gestern), "Percent") & " - davon " & Range("AX" & gestern) & " durch KDM und " & Range("T" & gestern) & " durch Unterstützer" & vbLf & _
"NPS-Werte " & Range("I" & gestern) & " gleich " & Format(Range("M" & gestern), "Percent") & " - davon " & Range("AW" & gestern) & " durch KDM und " & Range("S" & gestern) & " durch Unterstützer" & vbLf & _
"Nettokontakte " & Range("H" & gestern) & " gleich " & Format(Range("L" & gestern), "Percent") & " - davon " & Range("AV" & gestern) & " durch KDM und " & Range("R" & gestern) & " durch Unterstützer" & vbLf & vbLf & _
"Die NPS-Gesamtproduktivität lag bei " & Range("P" & gestern) & " Netto/h, VWQ " & Format(Range("O" & gestern), "Percent") & " und NPS-Messung " & Format(Range("Q" & gestern), "Percent")

olMail.Body = sText
olMail.Subject = "Ziele für heute und die Ergebnisse von gestern"
olMail.To = ""

olMail.Display

Set olMail = Nothing
Set olApp = Nothing

End Sub
 
Zurück
Oben