Zelleninhalt als e-mail senden (Ecxel)

Dieses Thema Zelleninhalt als e-mail senden (Ecxel) im Forum "Microsoft Office Suite" wurde erstellt von hahahaha, 2. Nov. 2005.

Thema: Zelleninhalt als e-mail senden (Ecxel) Ich hoffe mal das was Ich vorhabe lässt sich überhaupt realisieren. Ich habe eine Ecxel Tabelle, in Spalte A stehen...

  1. Ich hoffe mal das was Ich vorhabe lässt sich überhaupt realisieren.

    Ich habe eine Ecxel Tabelle, in Spalte A stehen untereinander 18 Namen (Name1 - Name18), in Zeile 1 stehen die Kalenderwochen (KW 1 - KW 52). Jede KW wird zu jedem Namen ein Wert eingetragen (0 - 100).

    Jetzt hätte Ich gerne einen Button der jedem Namen seinen Wert der letzten eingetragenen KW per e-mail schickt.

    Und zwar sollte in der Betreffzeile jeweils die KW stehen.
    Und in der e-mail ein Text:
    Du hast diese KW (dann der ermittelte Wert) Einheiten verbraucht und musst dafür (der ermittelte Wert * 0,25)? zahlen.

    Als e-mail Programm ist Microsoft Outlook vorhanden.

    Kann mir dabei jemand helfen oder sind meine Vorstellungen utopisch?
     
  2. Das sind mal echte Probleme! ;D ;D ;D
    Ich empfehle Vorauskasse, aber wenn es dazu eine Lösung geben sollte, bin ich jetzt schon gespannt.

    In Matjes we trust. 8)
     
  3. Hallo Thekensau,

    ist noch zu klären, wo die mail-Adresse zum Namen steht. Oder sollen nur 18 mail-Fenster aufgehen mit dem entsprechenden Text und du trägst die mail-Adressen von Hand ein.  ;)

    Gruß Matjes :)
     
  4. Die e-mail adressen stehen noch nirgendwo in der excel tabelle, in Outlook sind alle Vorhanden, kann die aber noch irgenwo in die Tabelle mit einbauen, kein Problem.

    Würde es denn gehen wenn ich die e-mail adressen außerhalb orgendwo hinlege und dann einfach ausblende?

    Und wäre auch schön, wenn ich nicht jede e-mail einzelnd abschicken muss, sollte alles automatisch gehen.

    Und ist meine Vorstellung überhaupt umsetzbar?
     
  5. Hallo Thekensau,

    jo das ist machbar.

    Die Namen/email-Zuordnung am besten  auf ein weiteres Blatt in der Tabelle legen.

    Werd mal etwas zusammenstellen.

    Gruß Matjes :)
     
  6. Hallo Thekensau,

    ich hab dir erstmal einen Makro zusammengestellt, der noch nicht die emails sendet, sondern sie als Msgbox ausgibt - sozusagen Testbetrieb für die Aufbereitung. Damit kannst du erstmal sehen, ob deine zu senden Parameter richtig erfasst werden.

    Die mail-Adressen hab ich einfach erstmal in Spalte B gelegt. Die Konstanten, die das Blatt beschreiben, mußt du ggf. anpassen.

    Probiers mal aus und schau ob die Aufbereitung so i.O. ist.

    Rest kommt morgen.

    Gruß Matjes :)

    Code:
    Option Explicit
    
    Type my_Mail_structure
      s_From          As String
      s_To            As String
      s_Subject       As String
      s_Text          As String
      s_Name          As String
      s_KW            As String
      s_Einheiten     As String
      s_Wert          As String
    End Type
    
    '*** Blattbeschreibung
    'Blattname
    Const c_BLATTNAME = Abrechnungsmatrix
    'Spalten
    Const c_SP_Name = 1
    Const c_SP_Email = 2
    Const c_SP_KW1 = 3
    Const c_AnzKWS = 52
    'Zeilen
    Const c_Z_UEBERSCHRIFTEN = 1
    Const c_Z_ERSTENAME = 2
    Const c_Z_LETZTERNAME = 19
    
    'Umrechnungsfakto Einheit/Wert
    Const c_UMRECHNUNGSFAKTOR_EINHEIT_WERT As Double = 0.25
    
    'Sender mail-Adresse
    Const c_SENDERMAILADRESSE = formMe@email.de
    
    Sub AbrechnugnsMails()
      
      Dim ws As Worksheet
      Dim f() As my_Mail_structure, f_cnt As Long
      
     ->Auftragsfeld mail initialisieren
      f_cnt = 0: ReDim Preserve f(1 To 1)
    
      On Error Resume Next
      Set ws = ActiveWorkbook.Worksheets(c_BLATTNAME)
      If Err.Number <> 0 Then
        MsgBox (Blatt-> & c_BLATTNAME &-> nicht vorhanden.)
        GoTo AUFRAEUMEN
      End If
      On Error GoTo 0
      
      If Not AbrechnungsmailsAufbereiten(ws, f(), f_cnt) Then
        MsgBox (Fehler in AbrechnungsmailsAufbereiten.)
        GoTo AUFRAEUMEN
      End If
      
      Call AbrechnungsdatenAlsMsgbox(f(), f_cnt)
      
      
    AUFRAEUMEN:
      On Error GoTo 0
      Set ws = Nothing
    End Sub
    
    '**************************************************************************
    Private Function AbrechnungsdatenAlsMsgbox(f() As my_Mail_structure, f_cnt As Long)
    
      Dim x As Long, s_Mldg As String
      
      For x = 1 To f_cnt
        s_Mldg = 
        s_Mldg = s_Mldg & mail  & x & vbLf & vbLf
        s_Mldg = s_Mldg & From:     & f(x).s_From & vbLf & vbLf
        s_Mldg = s_Mldg & To:       & f(x).s_To & vbLf & vbLf
        s_Mldg = s_Mldg & Subject:  & f(x).s_Subject & vbLf & vbLf
        s_Mldg = s_Mldg & Text:  & vbLf & f(x).s_Text
        MsgBox s_Mldg
      Next
    
    End Function
    '**************************************************************************
    
    Private Function AbrechnungsmailsAufbereiten(ws As Worksheet, _
                                                 f() As my_Mail_structure, _
                                                 f_cnt As Long) As Boolean
      
      Dim l_col As Long, n As Long
      
      AbrechnungsmailsAufbereiten = False
    
      For n = c_Z_ERSTENAME To c_Z_LETZTERNAME
        
       ->Name leer ?
        If ws.Cells(n, c_SP_Name).Value =  Then GoTo NAECHSTERNAME
        
       ->neues Feldelement anlegen
        f_cnt = f_cnt + 1: ReDim Preserve f(1 To f_cnt)
        
       ->Namen speichern
        f(f_cnt).s_Name = ws.Cells(n, c_SP_Name).Value
       
       ->letzte KW suchen
        l_col = ws.Cells(n, c_SP_KW1 + c_AnzKWS).End(xlToLeft).Column
        If l_col < c_SP_KW1 Then
          MsgBox (Kein Verbrauchswert in Zeile  & n)
          GoTo AUFRAEUMEN
        End If
        
       ->KW
        f(f_cnt).s_KW = KW & (l_col - c_SP_KW1 + 1)
        
       ->Einheiten
        f(f_cnt).s_Einheiten = ws.Cells(n, l_col).Value
        
       ->Einheiten in Betrag umrechnen
        On Error Resume Next
        f(f_cnt).s_Wert = _
          Format(f(f_cnt).s_Einheiten * c_UMRECHNUNGSFAKTOR_EINHEIT_WERT, 0.00) &  ?
        If Err.Number <> 0 Then
          MsgBox (Der Verbrauchswert in Zeile  & n &  ist keine Zahl.)
          GoTo AUFRAEUMEN
        End If
        On Error GoTo 0
        
       ->email leer ?
        If ws.Cells(n, c_SP_Email).Value =  Then
          MsgBox (Kein Mail-Adresse in Zeile  & n &  vorhanden.)
          GoTo AUFRAEUMEN
        End If
       ->To
        f(f_cnt).s_To = ws.Cells(n, c_SP_Email).Value
        
       ->From
        f(f_cnt).s_From = c_SENDERMAILADRESSE
        
       ->Subject
        f(f_cnt).s_Subject = Abrechnung -  & f(f_cnt).s_Name &  -  & f(f_cnt).s_KW
        
       ->Text
        f(f_cnt).s_Text = Du hast in  & f(f_cnt).s_KW &    & f(f_cnt).s_Einheiten & _
                           Einheiten verbraucht und musst dafür  & f(f_cnt).s_Wert & _
                           zahlen. & vbLf & vbLf & _
                          Der Stromwart
        
    NAECHSTERNAME:
      Next
    
      If f_cnt = 0 Then
        MsgBox (Es sind keine Abrechnungsdaten vorhanden.)
        GoTo AUFRAEUMEN
      End If
    
      AbrechnungsmailsAufbereiten = True
    AUFRAEUMEN:
      On Error GoTo 0
    End Function
     
  7. Habe nur mal mitgelesen!
    :T Matjes Du bist spitze! :T

    cu
    warft7
     
  8. Morgen Matjes,

    ersteinmal herzlichen Dank für die Mühe.

    Ich habe jetzt aber ein Problem, Ich weiß nicht wo Ich den Code einfügen muss, damit es funktioniert, könntest du mir das evtl. auch noch eben erkläören?

    Danke
     
  9. Hallo Thekensau,

    geh mal folgendermassen vor:

    Makro in Modul:
    1) deine Excel-Datei öffnen
    2) VB-Ediotr öffnen Alt+F11
    Links siehst Du ein Fenster mit der Überschrift Projekt-VBA-Project.
    In diesem Fenster ist die Arbeitsmappe unter dem Namen VBAProject(Dateiname) zu finden.
    3) VBAProject(Dateiname) selektieren
    3) rechte Maustaste->Modul->Modul einfuegen
    in der Mitte geht das Code-Fenster Dateiname - Modulx(Code) auf
    4) den Code per copy und Paste in dieses Fenster hineinkopieren
    5) die Konstanten anpassen
    6) speichern mit Strg+S
    7) mit Alt+Q VB-Editor schliessen

    Ausprobieren:
    Extra->Makros->Makro->AbrechnugnsMails->Ausführen

    Gruß Matjes :)
     
  10. Super, das läuft genau so, wie Ich mir das vorgestellt habe, wenn das Macro die emails nachher alle selbstständig versendet.

    Aber eine Kleinigkeit habe Ich noch das Macro nimmt an, dass die erste Zeile KW automatisch KW 1 ist und zählt dann hoch, die erste KW ist aber nicht die KW 1 sondern ist eine der letzten im vorigem Jahr. Also habe ich nun das Problem, dass es eine KW 57 und so weiter gibt, und dass er mir in der email angibt es ist die KW 6 aber in wirklichkeit ist es KW 51.
     
Die Seite wird geladen...

Zelleninhalt als e-mail senden (Ecxel) - Ähnliche Themen

Forum Datum
Zelleninhalte automatisch verschieben Microsoft Office Suite 27. Feb. 2013
Zelleninhalt gleich Zelleninhalt Windows XP Forum 30. Jan. 2007
Anzahl Zelleninhalt Microsoft Office Suite 21. Dez. 2006
Zelleninhalt überprüfen und kopieren Windows XP Forum 11. Aug. 2006
Zelleninhalt in jeweilige Zelle Kopieren Microsoft Office Suite 8. Nov. 2005