Makro zum versenden von PDFs mit Hilfe des Filenames

thomson1308

Mitglied
Hallo zusammen,

ich stehe hier vor einem Problem und hoffe jemand kann mir helfen.
In einem Ordner habe ich eine Menge pdfs D:\Test\ jeweils mit dem Filename "nachname_vorname.pdf"

Nun habe ich dieses Skript gefunden und würde dies gerne anpassen, blicke aber nicht wie:

Visual Basic:
Option Explicit
Sub Verteiler()

'Bitte anpassen
Const strEmpfänger As String = "nachname_vornam@domain.com"
Const strVerzeichnis As String = "D:\Test\"

Dim miSenden As MailItem
Dim strFilename As String

strFilename = Dir(strVerzeichnis & "*.pdf")
Do While strFilename > ""
  Set miSenden = Application.CreateItem(olMailItem)
  With miSenden
    .To = strEmpfänger
    .Subject = strFilename
    .Body = "Sehr gehrte" & vbLf _
            & "MfG" & vbLf _
            & "Absender"
    .Attachments.Add strVerzeichnis & strFilename
    .Send
  End With
  strFilename = Dir
Loop
Set miSenden = Nothing
End Sub

Da es sich um viele PDF's handelt, wäre die Idee das er sich den Empfänger aus dem Namen der PDF erzeugt und somit die richtig PDF dem richtigen Empfänger geschickt wird.

Geht das?

LG und Danke
 
Zuletzt bearbeitet von einem Moderator:

Yaslaw

alter Rempler
Moderator
Woher nimmst du die Domain? Oder ist das immer die gleiche?

Ansonsten ist es ein einfaches Text Aufteilen. In dem Fall sogar ein abschneiden. Du musst ja nur das ".pdf" am Ende entfernen.
Visual Basic:
email =  left("nachname_vorname.pdf", Len("nachname_vorname.pdf")-4) & "@domain.com"
Visual Basic:
'Test im Drektfenster
strFilename = "nachname_vorname.pdf"
email =  left("nachname_vorname.pdf", Len("nachname_vorname.pdf")-4) & "@domain.com"
'email ausgeben
?email
nachname_vorname@domain.com
 

thomson1308

Mitglied
Hey,
danke für die Hilfe...blicke ich leider nicht. :(
Die Domain wäre immer die selbe, korrekt. Es sind ja mehrere PDF's für unterschiedliche Personen im Ordner
 

Yaslaw

alter Rempler
Moderator
Sorry, ich hatte im Code noch mein Test drin. So sollte der Code-Schnippsel aussehen
Visual Basic:
.To =  left(strFilename, Len(strFilename)-4) & "@domain.com"
 

thomson1308

Mitglied
okay, was mach ich hier wieder falsch?
Code:
Const strEmpfänger = Left(strFilename, Len(strFilename) - 4) & "@domain.com"
Const strVerzeichnis As String = "D:\Test\"
 

Yaslaw

alter Rempler
Moderator
Bei Const kannst du keine Formeln anwenden. Zudem ist der Empfänger definitiv nicht mehr konstant, da er sich ja für jedes Mail wechselt. Schmeiss die Konstante raus.
Der Empfänger muss innerhalb der Schleife gesetzt werden. Als Variable oder direkt dem Mail zugeordnet

Ich habe ja .To= in meiner Vorlage verwendet. Schau mal in deinem Code, wo das .To= gesetzt wird.
 
Zuletzt bearbeitet:

Zvoni

Erfahrenes Mitglied
Dir ist klar, dass pro PDF jeweils eine Mail versendet wird?
bzw. da in dem PDF-Ordner ein "Empfänger" nicht mehrmals vorkommen kann (Eindeutigkeit von Dateinamen) jeder Empfänger immer nur ein PDF als Anhang hat?