VBA Mail erstellen aus einer Zeile, wenn Haken o.Ä. gesetzt ist
#1
Hallo zusammen,
ich bräuchte bitte Hilfe bei einem VBA Problem  Angel
Ich habe eine Tabelle mit Ersatzteilen und Beständen dazu. Wenn ein Ersatzteil nachbestellt werden soll, möchte ich mit einem Klick eine Mail erstellen lassen, die alle Informationen zu dem eine Ersatzteil enthält. Das bekomme ich auch für eine bestimmte Zeile hin (siehe Anhang, Modul1, „mai_erstellen“, die Tabelle ist nur ein Beispiel und wird noch größer mit mehr Einträgen). In dem Fall für das erste Ersatzteil in Zeile 5. Ich möchte allerdings, dass es für alle Zeilen möglich ist. Im „normalen“ Excel würde ich die Formel ja einfach „herunterziehen“ und dann wird das für alle Zeilen angewandt. In VBA habe ich keine Ahnung wie das funktionieren soll Huh . Ich möchte nicht mehrere Ersatzteile/ Zeilen gleichzeitig bestellen, sondern immer nur ein Ersatzteil/ Zeile auswählen und daraus eine Mail generieren. Z.B. die Zeile 7 mit dem Ersatzteil „Verlängerung“.
Eine Idee ist (ohne dass ich weiß, ob das umsetzbar ist):
Hinter jedem Ersatzteil/ Zeile ist ein Kontrollkästchen. Wenn das Kontrollkästchen angehakt ist und ich auf den Button „Mail erstellen“ (Zelle M2) klicke, wird die Mail mit den Daten aus der Zeile gefüllt, wo ich den Haken gesetzt habe.
Vielleicht habt ihr aber auch bessere oder andere Ideen…
Ich hoffe ich habe mein Problem verständlich beschrieben und freue mich sehr auf eure Rückmeldungen  19

Schöne Grüße
Michael


Angehängte Dateien
.xlsm   VBAmailto.xlsm (Größe: 18,51 KB / Downloads: 2)
Antworten Top
#2
Hallo Michael,

hier eine Idee zu Deinem Anliegen....

Der Code geht die Tabelle durch und erstellt für jede Zeile, in der in Spalte "M" ein X steht eine entsprechende Mail.

Code:

Option Explicit

Sub Mail_erstellen()
  Dim objOutlook As Object, iZeile As Long
  Dim sBetreff As String, sMailtext As String
  
  Set objOutlook = CreateObject("Outlook.Application")
  With Tabelle1
      For iZeile = 5 To .Cells(.Rows.Count, "A").End(xlUp).Row
         If UCase$(.Cells(iZeile, "M").Value) = "X" Then
            sBetreff = .Cells(4, "M").Value & ": " & .Cells(iZeile, "A").Value
            sMailtext = .Cells(4, "A").Value & " " & .Cells(iZeile, "A").Value & vbCrLf _
                      & .Cells(4, "B").Value & " " & .Cells(iZeile, "B").Value & vbCrLf _
                      & .Cells(4, "C").Value & " " & .Cells(iZeile, "C").Value & vbCrLf
        
            With objOutlook.CreateItem(0)
                .GetInspector
                .To = Tabelle1.Cells(iZeile, "K").Value
                .cc = Tabelle1.Cells(iZeile, "L").Value
                .Subject = sBetreff
                .Body = sMailtext & .Body
                .display
                '.Send        'Sendet die Email automatisch
            End With
            .Cells(iZeile, "M").Value = "versendet"
         End If
      Next iZeile
  End With
  Set objOutlook = Nothing
End Sub

_________
viele Grüße
Karl-Heinz
[-] Folgende(r) 1 Nutzer sagt Danke an volti für diesen Beitrag:
  • MT1986
Antworten Top
#3
Das ist genau das, was ich gesucht habe.
Vielen Dank!
Antworten Top
#4
Hallo Karl-Heinz,
ich habe doch noch eine Frage dazu:
Kann ich auch eine Information aus einer Zelle FETT machen?
Antworten Top
#5
Hallo MT,

damit du in Outlookmails Fettdruck nutzen kannst, kannst du statt der .Body-Eigenschaft die .HTMLBody eigenschaft benutzen. Dazu musst du "nur" in der String-Erstellung HTML-Tags einsetzen.
ungetestet z. B. so:
Code:
sMailtext = .Cells(4, "A").Value & " " & .Cells(iZeile, "A").Value & "<br>" _
      & .Cells(4, "B").Value & " <strong>" & .Cells(iZeile, "B").Value & "</strong><br>"_
      & .Cells(4, "C").Value & " " & .Cells(iZeile, "C").Value & "<br>"


'[...]
.HTMLBody = sMailtext

Viele Grüße
derHöpp
[-] Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:
  • MT1986
Antworten Top
#6
Hallo zusammen,

Ich verwende immer noch den alten b-Tag für bold.
Wozu später der strong-Tag bereitgestellt wurde ist mir auch nicht klar.
Denn die anderen Tags wie der i-Tag für kursiv und der u-Tag für unterstrichen sind ja geblieben.

Also mittels HTML kannst Du auch Schriftart, Farben und sehr viel mehr einstellen.

Gruß Karl-Heinz
Antworten Top
#7
Moin,

der strong-Tag überlässt dem anzeigenden Client die Darstellung von betonten Textanteilen. Letztlich ist das natürlich Janker wie Klose. Ein CSS-Purist würde eher ein wahrscheinlich eher Span-Element mit eigener Klasse oder eigener style-definition draus machen:
Code:
ein <b>fetter</b> Text<br>
ein <strong>betonter</strong> Text <br>
ein <span style="font-weight:bold;">gestylter</span> Text

Viele Grüße
derHöpp
Antworten Top
#8
Ah, danke für den Hinweis, derHöpp, wusste ich nicht.
Span verwende ich auch meistens, aber nicht wenn mal nur was fett machen will.

Gruß KH
Antworten Top
#9
Ich habe es hinbekommen.
Vielen Dank!
Antworten Top
#10
Hi,

ich habe jetzt ja wirklich keine Ahnung von HTML, aber das ist doch obern schon dargestellt: Ersetzte
Code:
vbCrLf
durch
Code:
"<br>"
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • MT1986
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste