Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
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

VBA: PDF an mehrere Mailadressen senden

VBA: PDF an mehrere Mailadressen senden
29.09.2020 15:30:58
Janek
Hallo zusammen,
ich probiere mich gerade mit VBA aus und habe auch es auch schon geschafft, dass aus einer Dropliste mit den verschiedenen Firmen drin, jeweils ein Pdf erzeugt wird und unter verschiedenen Namen abgespeichert wird.
Ich will das ganze nun aber so erweitern, dass über ein weiteres Makro das jeweilige PDF über Outlook an eine im Sheet hinterlegte E-Mail Adresse verschickt wird. Allerdings müssen die unterschiedlichen PDF's an zum Teil unterschiedliche Mail-Adressen verschickt werden. Ist dies in VBA programmierbar und falls ja kann mir jemand zeigen, wie ich das ganze aufstellen muss.
Die Datei mit dem Makro findet ihr unter:
https://www.herber.de/bbs/user/140518.xlsm
Viele Grüße
Janek

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: PDF an mehrere Mailadressen senden
29.09.2020 16:33:29
Nepumuk
Hallo Janek,
teste mal:
Option Explicit

Public Sub Pdf()
    
    Dim objDropdown As Shape, objCell As Range
    Dim objOutlook As Object, objMail As Object
    Dim strPath As String
    Dim i As Long
    
    Set objOutlook = CreateObject("Outlook.Application")
    
    'Tabellennamen anpassen
    With Worksheets("Anschreiben")
        
        'Name des Dropdownfeldes anpassen
        Set objDropdown = .Shapes("Dropdown 6")
        
        For i = 1 To objDropdown.ControlFormat.ListCount
            
            objDropdown.ControlFormat.Value = i
            
            If Trim$(.Range("A21").Text) <> vbNullString Then
                
                strPath = "C:\Users\Acer\Desktop\" & Sheets("Anschreiben").Range("A21").Text & ".pdf"
                
                ThisWorkbook.Worksheets("Anschreiben").ExportAsFixedFormat _
                    Type:=xlTypePDF, Filename:=strPath, _
                    Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                    IgnorePrintAreas:=False, OpenAfterPublish:=False
                
                DoEvents
                
                Set objCell = Worksheets("Betreiberliste").Columns(1).Find( _
                    What:=.Range("A21").Text, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
                
                Set objMail = objOutlook.CreateItem(0)
                
                With objMail
                    
                    .To = objCell.Offset(0, 6).Text
                    .Subject = "Betreff"
                    .Attachments.Add strPath
                    .Body = "Hallo"
                    .Display ' Anzeigen
                    '.Send ' Direkt senden
                    
                End With
            End If
        Next i
    End With
    
    Set objDropdown = Nothing
    Set objCell = Nothing
    Set objMail = Nothing
    Set objOutlook = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA: PDF an mehrere Mailadressen senden
29.09.2020 16:58:07
Janek
Hallo Nepumuk,
funktioniert wunderbar. Vielen Dank dir.
Jetzt ist mir noch eine mögliche Erweiterung eingefallen, allerdings bin ich mir nicht sicher, ob dies technisch überhaupt möglich ist mit VBA. Wie du in der Datei siehst, haben manche Firmen die gleiche Mailadresse.
Ist es möglich alle PDF's die zu einer Mail-Adresse gehören per VBA in eine Mail zupacken?
Gruß
Janek
AW: VBA: PDF an mehrere Mailadressen senden
29.09.2020 17:39:21
Nepumuk
Hallo Janek,
teste mal:
Option Explicit

Private Type FILES
    Path() As String
End Type

Public Sub Pdf()
    
    Dim objDropdown As Shape, objCell As Range
    Dim objOutlook As Object, objMail As Object
    Dim objDictionary As Object
    Dim strPath As String, strMailAddress As String, avntMailAddress As Variant
    Dim i As Long, ialngFilesIndex As Long, ialngTempIndex As Long
    Dim lngIndex As Long, ialngPathIndex As Long
    Dim audtFiles() As FILES
    
    Set objOutlook = CreateObject(Class:="Outlook.Application")
    Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
    
    'Tabellennamen anpassen
    With ThisWorkbook.Worksheets("Anschreiben")
        
        'Name des Dropdownfeldes anpassen
        Set objDropdown = .Shapes("Dropdown 6")
        
        For i = 1 To objDropdown.ControlFormat.ListCount
            
            objDropdown.ControlFormat.Value = i
            
            If Trim$(.Range("A7").Text) <> vbNullString Then
                
                strPath = "C:\Users\Acer\Desktop\" & .Range("A21").Text & ".pdf"
                
                .ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPath, _
                    Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                    IgnorePrintAreas:=False, OpenAfterPublish:=False
                
                DoEvents
                
                Set objCell = ThisWorkbook.Worksheets("Betreiberliste").Columns(1).Find( _
                    What:=.Range("A21").Text, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
                
                strMailAddress = objCell.Offset(0, 6).Text
                
                If objDictionary.Exists(Key:=strMailAddress) Then
                    
                    ialngTempIndex = objDictionary.Item(Key:=strMailAddress)
                    Redim Preserve audtFiles(ialngTempIndex).Path(UBound(audtFiles(ialngTempIndex).Path) + 1)
                    audtFiles(ialngTempIndex).Path(UBound(audtFiles(ialngTempIndex).Path)) = strPath
                    
                Else
                    
                    Redim Preserve audtFiles(ialngFilesIndex)
                    Redim audtFiles(ialngFilesIndex).Path(0)
                    audtFiles(ialngFilesIndex).Path(0) = strPath
                    objDictionary.Item(Key:=strMailAddress) = ialngFilesIndex
                    ialngFilesIndex = ialngFilesIndex + 1
                    
                End If
            End If
        Next i
    End With
    
    avntMailAddress = objDictionary.Keys
    
    For lngIndex = LBound(avntMailAddress) To UBound(avntMailAddress)
        
        Set objMail = objOutlook.CreateItem(0)
        
        With objMail
            
            .To = avntMailAddress(lngIndex)
            .Subject = "Betreff"
            .Body = "Hallo"
            
            ialngTempIndex = objDictionary.Item(Key:=avntMailAddress(lngIndex))
            
            For ialngPathIndex = LBound(audtFiles(ialngTempIndex).Path) To UBound(audtFiles(ialngTempIndex).Path)
                
                .Attachments.Add audtFiles(ialngTempIndex).Path(ialngPathIndex)
                
            Next
            
            .Display ' Anzeigen
            '.Send ' Direkt senden
            
        End With
    Next
    
    Set objDropdown = Nothing
    Set objCell = Nothing
    Set objMail = Nothing
    Set objOutlook = Nothing
    Set objDictionary = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA: PDF an mehrere Mailadressen senden
29.09.2020 17:55:22
Janek
Vielen vielen Dank dir.
Es klappt auf Anhieb :)

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige