Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 14:18:05
28.04.2024 13:43:14
Anzeige
Archiv - Navigation
1920to1924
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
Inhaltsverzeichnis

Automatisch Mails mit Anhang verschicken

Automatisch Mails mit Anhang verschicken
26.02.2023 22:11:06
Edis
Hallo zusammen. Ich will folgendes machen:
Ich habe eine Excel-Datei. Ich habe 2 Tabellenblätter. Ein Tabellenblatt heißt "Tabelle1" und die andere heißt "Firmen“.
Ich möchte, wenn ich in Tabelle1 in Spalte u ein Datum eintrage, dass in Spalte R nachgeschaut wird, welcher Wert dort steht und anschließend dieser Wert aus Spalte R im Tabellenblatt Firmen in Spalte A gesucht wird. Wenn etwas gefunden wird, steht rechts daneben (also in Spalte B) eine E-Mailadresse.
Ich möchte jetzt eine E-Mail vorbereiten. Als Empfänger soll die gefundene E-Mailadresse übernommen werden. Als Betreff: Bestellung {wert aus spalte B}. Außerdem soll immer derselbe Text eingefügt werden (Textbaustein).
Außerdem soll ein Anhang an diese E-Mail gehängt werden: In Tabelle1 in Spalte B ist ein jeweils ein Hyperlink speziell für die Spalte hinterlegt. Der Hyperlink ist ein Dateipfad zu einem Ordner im Netzlaufwerk. Der Dateipfad ist immer ein absoluter Pfad, kein relativer. Der Hyperlink steht nicht im Klartext in dem Feld, sondern als Link des Anzeigetextes in dem Feld. Dieser Pfad soll aufgerufen werden und hier soll eine Datei als Anhang übernommen werden. Und zwar soll in diesem Ordner die Datei genommen werden, in deren Dateinamen die Zeichenfolge „BS-„ vorkommt und die eine PDF ist. Anschließend soll die E-Mail verschickt werden.
Anschließend soll in dem Ordner, wo der Pfad in Spalte B hinterlegt ist, ein Unterordner mit dem Namen Bestellung erstellt werden. Als letztes soll die versendete E-Mail in diesem Ordner gespeichert werden. Als Dateiname beim Speichern der E-Mail „B {wert aus spalte r aus Tabelle1}“ verwendet werden.
Ich habe hier die Excel-Beispielmappe hochgeladen, dort ist auch der VBA-Code in Tabelle1 hinterlegt:
https://www.herber.de/bbs/user/158027.xls
Ich habe dazu den folgenden VBA-Code erstellt. Ich kriege immer bei Einfügen eines Datums in Spalte U den Laufzeitfehler aus dem angehängten Screenshot.
Userbild
Und hier der Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DateiPath As String
Dim Dateiname As String
Dim Datum As Date
Dim Wert As String
Dim Pfad As String
Dim Empfänger As String
Dim Betreff As String
Dim Text As String
Dim Auftragnehmer As String

If Target.Column = 21 Then
If IsDate(Target.Value) Then
Datum = CDate(Target.Value)
Wert = Worksheets("Tabelle1").Range("R" & Target.Row).Value

'Suche nach dem Wert in der Spalte A in Tabelle "Firmen"
With Worksheets("Firmen")
Set c = .Range("A:A").Find(Wert, LookIn:=xlValues)
If Not c Is Nothing Then
'Wenn Wert gefunden, nehme die E-Mail-Adresse aus der Spalte rechts neben dem Wert
Empfänger = c.Offset(0, 1).Value
'Nimm den Pfad aus dem Hyperlink in Spalte B
Pfad = Target.EntireRow.Hyperlinks(1).Address
Pfad = Left(Pfad, InStrRev(Pfad, "\"))
'Erstelle den Ordner, wenn er nicht vorhanden ist
If Dir(Pfad & "\Bestellung", vbDirectory) = "" Then
MkDir Pfad & "\Bestellung"
End If
'Suche nach der Datei in dem Verlinkten Ordner
Dateiname = Dir(Pfad & "\*BS*.pdf")
'Nimm den Auftragnehmer aus Spalte R
Auftragnehmer = Target.Offset(0, -7).Value
'Erstelle die Email
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = Empfänger
.BCC = ""
.Subject = "Bestellschein"
.Body = "Sehr geehrte Damen und Herren," & vbNewLine & vbNewLine & "Anbei übersende ich Ihnen einen Bestellschein. Bitte beachten Sie die Lieferanschrift." & vbNewLine & vbNewLine & "Mit freundlichen Grüßen,"
.Attachments.Add Pfad & "\" & Dateiname
.Send
End With

'Speichere die versendete E-Mail
DateiPath = Pfad & "\Bestellung\Bestellung " & Wert & ".msg"
OutMail.SaveAs DateiPath, olMSG

'Zeige eine MsgBox mit der Information an, welche E-Mail versendet und gespeichert wurde
MsgBox "E-Mail wurde an " & Empfänger & " versendet und unter " & DateiPath & " gespeichert für Vorgang " & Wert & " mit Auftragnehmer " & Auftragnehmer
'Lösche den Objektverweis
Set OutMail = Nothing
Set OutApp = Nothing
Else
MsgBox "Keine E-Mail-Adresse gefunden für Vorgang " & Wert
End If
End With
Else
MsgBox "Ungültiges Datum in Spalte U"
End If
End If
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatisch Mails mit Anhang verschicken
26.02.2023 22:43:10
SF
Hola,
warum antwortest du nicht im vba Forum?
Gruß,
steve1da
AW: Automatisch Mails mit Anhang verschicken
27.02.2023 15:01:11
Edis
Ich ahbe da keine Antwort gesehen?
Zudem finde ich dieses Forum von der Struktur her besser aufgebaut, weil ich auch Dateien hochladen kann. Und ich finde es hilfreich, wenn Leute sich die Datei angucken können.
Gruß, Edis
AW: Automatisch Mails mit Anhang verschicken
02.03.2023 17:03:43
Oberschlumpf
und ich sehe im VBA-Forum schon - zwei - Antworten zu deiner dort gestellten Frage.
unabhängig davon, wo es dir besser gefällt, ist es für alle Beteiligten - eben auch für die Antworter - einfacher, wenn du in mehreren Foren die selbe Frage stellst, dass du dann auch - in jedem Forum! - darüber informierst, wo überall du die selbe Frage gestellt hast
und damit du auch hier eine "andere" Antwort bekommst, könnte ich dir empfehlen, noch intensiver Google zu nutzen - denn deine Frage wurde schon sooo oft gestellt und genau sooo oft auch so erfolgreich beantwortet, dass der jeweilige Fragende zufrieden war mit den Antworten.
nein, ich bin nicht zu faul, dir eine maßgeschneiderte Lösung anzubieten, aber ich müsste auch nur googeln, um dir dann einfach den Trefferlink zu schicken.
und das bekommst du bestimmt auch alleine hin...bin ich mir sicher
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige