• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Bijlage vertsuren via Gmail

Status
Niet open voor verdere reacties.

Thankyou

Terugkerende gebruiker
Lid geworden
3 mei 2009
Berichten
1.737
Beste,

Ik heb een bestand met zo'n 24 tabbladen. Op elk tabblad staat een mailadres waarnaar verstuurd moet worden, tot zover geen probleem.

Elke ontvanger (via het email adress op het tabblad) krijgt een eigen, unieke bijlage. Het bestand wat bijgevoegd (PDF) wordt bestaat gedeeltelijk uit een vaste bestandsnaam en gedeeltelijk uit waarden die van het tabblad worden gehaald.

De uitdaging is nu dat de eerste inderdaad het unieke bestand toegestuurd krijgt, de 2e krijgt zijn unieke bijlage ook maar ook die van de eerste. En ja de 3e krijgt 3 bestanden. Het is de bedoeling dat elk alleen hun eigen bestand toegestuurd krijgen en niet die van de ander.

Dit is de code:
Code:
Private Sub CommandButton1_Click()
    Locy = ActiveWorkbook.Path

    Dim iMsg As Object
    Dim iConf As Object
    Dim strbody As String
    Dim Flds As Variant
    Dim BestandSend As String
     
    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")

    iConf.Load -1 ' CDO Source Defaults
    Set Flds = iConf.Fields
        With Flds
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
            .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Test@Gmail.com"   'email adres invullen
            .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Password"  'wachtwoord invullen
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
            .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
            .Update
        End With
        
    For mail = 1 To 3
        loc2 = Locy & "\Test " & Sheets(mail).Range("C1").Value & " verzonden"
        BestandSend = loc2 & "\" & Sheets(mail).Range("B1").Value & " test " & Sheets(mail).Range("C1").Value & " verzonden.pdf"

            strbody = "Beste " & Sheets(mail).Cells(1, 6).Value & vbNewLine & vbNewLine & _
                "Testmail " & Sheets(mail).Range("C1").Value & vbNewLine & _
                "  Testregel" & vbNewLine & _
                "  Testregel" & vbNewLine & vbNewLine & _
                "testregel" & vbNewLine & _
                "Test"

            With iMsg
            Set .Configuration = iConf
                .To = Sheets(mail).Cells(1, 5).Value
                .CC = ""
                .BCC = ""
                .From = """ Bestanden verzonden "" <test@gmail.com>"
                .ReplyTo = Sheets(mail).Cells(1, 26).Value
                .Subject = "Verzonden bestanden " & Sheets(mail).Cells(1, 3).Value
                .TextBody = strbody
                .AddAttachment BestandSend
                .Send
            End With
      
    Next

End Sub

In de bovenstaande code en in het bijgevoegde bestand heb ik uit privacy overweging de gebruikte e-mail adressen en wachtwoord moeten veranderen / weglaten.
 

Bijlagen

ik zou mappen delen via googledrive, onedrive, box sync of dropbox. Ieder zijn eigenmap. Sommigen met rechten om (andere mappen) te lezen. 1 excel bestand en de relevante bladen naar de mappen kopieren en gekoppeld houden. Wat een sport en ik doe dat inderdaad zo. Ik gebruik trouwens alle 4 de cloud services (doorelkaar).

Macro's vermijd ik allerwegen...(...)
 
Beste janbakker 4224

Hartelijk dank voor je reactie.

Ik begrijp je opmerking en ben bekend met drive e.d. .
Helaas moet ik bekennen dat er onder de ontvangers mensen zitten die e-mail net een beetje begrijpen. Dit samen met nog enkele redenen maken dat we het gewoon bij de mail moeten houden.

Ik hoop dat je dus wel een juiste macro voor mij hebt.

Nogmaals dank voor je reactie
Met vriendelijke groet,
 
Als ik de code goed begrepen heb, heet elk bestand "test 29 verzonden.pdf" En blijven deze in de actuele map staan. Probeer het eens door de bestandsnamen unieke te maken. En waarom gebruik je overal spaties?
 
Beste VenA,

Bedankt voor je reactie

Bijna,
De map waar de bestanden instaan heet voor het test bestand "test 29 verzonden" (Loc2) en de bestanden die daar instaan zijn allen uniek. Deze map staat op dezelfde locatie als het originele bestand.

De naam van het PDF bestand wordt opgebouwd uit de tekst van het betreffende tabblad cel B1 (een plaatsnaam) & " test " & een nummer uit het betreffende blad cel C1 (in dit geval 29) & " Verzonden.pdf"

De spaties zijn voor mij om alle bestanden in de originele map iets leesbaarder te houden.

Bijlage: zoals het pdf bestand opgeslagen wordt, let wel zo'n bestand is er dus voor elk tabblad uniek.
 

Bijlagen

Je hebt gelijk B1 had had ik inderdaad gemist. Misschien een open deur maar kan je eens met <F8> door de code lopen.
 
De code loopt goed.
Ik gebruikte een soortgelijke code om via outlook te verzenden en dat ging goed zo.
Nu moeten we binnenkort via Gmail gaan werken en moet de code aangepast worden

het lijkt wel of elke bijlage in een soort geheugen blijft zitten.
De bijlage wordt bijgevoegd via BestandSend en ik heb al geprobeerd dit leeg te maken door bijvoorbeeld BestandSend="" toe te voegen maar dat werkt ook niet.
 
Dag Martin,


..... code verwijderd (werkt uiteraard niet)....
 
Laatst bewerkt:
Beste Harry,

Hij verzend de eerste mail, loopt bij de 2e vast bij addatachment, kan dat komen door de BestandSend = BestandSend etc. ?
Op het moment dat ik dat weg haal en er dus maar 1x BestandSend staat op de regel dan voegt hij weer de voorgaande bestanden ook bij.

Raar vind ik dit....

P.S.
Nog niet over gestapt qua merk (M.A.N.) ?
 
Laatst bewerkt:
Vergeet mijn vorig schrijven, en probeer dit eens.
Het stukkie code tussen Textbody en Send.
Code:
.TextBody = strbody
        For i = 1 To mail
            BestandSend = loc2 & "\" & Sheets(i).Range("B1").Value & " test " & Sheets(i).Range("C1").Value & " verzonden.pdf"
            .AddAttachment BestandSend
        Next i
          .Send
Wel de regel van "BestandSend" bovenaan uiteraard verwijderen.

Ps.
Nee ik heb nog steeds dit merk. :thumb:
 
Laatst bewerkt:
Het werkt helaas nog niet, ik begrijp de gedachtegang hier achter maar nu komt het eerste bestand 3x als bijlage en het 2e bestand 2x als bijlage mee met het laatste verzend adres. Amsterdam ontvangt dus nu 6 bijlagen.

De code is nu zo geworden:
Code:
Private Sub CommandButton1_Click()
    Locy = ActiveWorkbook.Path

    Dim iMsg As Object
    Dim iConf As Object
    Dim strbody As String
    Dim Flds As Variant
    Dim BestandSend As String
     
    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")

    iConf.Load -1 ' CDO Source Defaults
    Set Flds = iConf.Fields
        With Flds
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
            .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "tes@gmail.com"   'email adres invullen
            .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Password"  'wachtwoord invullen
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
            .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
            .Update
        End With


    For mail = 1 To 3
        loc2 = Locy & "\Test " & Sheets(mail).Range("C1").Value & " verzonden"
 '       BestandSend = loc2 & "\" & Sheets(mail).Range("B1").Value & " test " & Sheets(mail).Range("C1").Value & " verzonden.pdf"

            strbody = "Beste " & Sheets(mail).Cells(1, 6).Value & vbNewLine & vbNewLine & _
                "Testmail " & Sheets(mail).Range("C1").Value & vbNewLine & _
                "  Testregel" & vbNewLine & _
                "  Testregel" & vbNewLine & vbNewLine & _
                "testregel" & vbNewLine & _
                "Test"

            With iMsg
            Set .Configuration = iConf
                .To = Sheets(mail).Cells(1, 5).Value
                .CC = ""
                .BCC = ""
                .From = """ Bestanden verzonden "" <test@gmail.com>"
                .ReplyTo = Sheets(mail).Cells(1, 26).Value
                .Subject = "Verzonden bestanden " & Sheets(mail).Cells(1, 3).Value
                .TextBody = strbody
                        For i = 1 To mail
                            BestandSend = loc2 & "\" & Sheets(i).Range("B1").Value & " test " & Sheets(i).Range("C1").Value & " verzonden.pdf"
                            .AddAttachment BestandSend
                        Next i
  '              .AddAttachment BestandSend
                .Send
            End With
    Next

End Sub

De "BestandSend" regels die in het bestand stonden had ik uitgeschakeld.
 
Laatst bewerkt:
Ik heb ergens Gmail waar ik nooit iets mee doe, maar ik heb de bestanden niet, en hoe test ik dit?
Ik zal nog even mijn gedachtengang er op loslaten.
 
Dank je wel Harry.

In post #1 staat het testbestand
In post #5 staat 1 PDF bestand (Amsterdam)
In deze post staan de andere 2 test pdf bestanden.

De PDF dient geplaatst te worden in een map genaamd : "test 29 verzonden" (Loc2)
Deze map staat in de zelfde map als waar het bestand in geplaatst is.

Waarschijnlijk overvloedig om te zeggen dat in het originele bestand het niet Test en nog iets heet maar het principe blijft wel zo. Aanpassen moet me wel lukken denk ik.

Alvast bedankt en weltrusten voor zo.:thumb:
 

Bijlagen

Martin,

Ik heb het even getest met Outlook, en daar werkt het perfect.

De eesrte ontvanger krijgt 1 bijlage.
De tweede ontvanger de eerste en de tweede.
De derde ontvanger krijgt ze alle drie.

Waarom het fout gaat in Gmail kan ik nog niet volgen.

Ik heb het even zo getest, en dat gaat ook goed.
Code:
For i = 1 To mail
            BestandSend = loc2 & "\" & Sheets(i).Range("B1").Value & " test " & Sheets(i).Range("C1").Value & " verzonden.pdf"
         MsgBox BestandSend
            '.AddAttachment BestandSend
        Next i
 
Laatst bewerkt:
Kan vanavond je nieuwste stuk proberen. (Werk)

Inderdaad met outlook is er geen probleem, dan krijgt elke ontvanger netjes 1 pdf bestand. Waarom het dan via gmail de vorige bijlagen bij blijft voegen is mij een kompleet raadsel.

In een vorig bericht gaf ik al aan dat het lijkt alsof de bijlage in een soort geheugen blijft zitten maar staven kan ik dat niet.
 
Martin,

Als ik alles goed begrepen heb zend deze een individuele bijlage naar individueel persoon per werkblad.
Code:
Sub CDO_Martin()
    'Verwijzing Microsoft CDO for Windows 2000 Library aanvinken
    For mail = 1 To 3
        With Sheets(mail)
            TempFilePath = ThisWorkbook.Path & "\Test " & .Range("C1") & " verzonden\" & _
            .Range("B1").Value & " test " & .Range("C1").Value & " verzonden.pdf"
            strbody = "Beste " & .Range("F1").Value & vbNewLine & vbNewLine & _
                "Testmail " & .Range("C1").Value & vbNewLine & _
                "  Testregel" & vbNewLine & _
                "  Testregel" & vbNewLine & vbNewLine & _
                "testregel" & vbNewLine & _
                "Test"
        End With
        With New CDO.Message
            .Configuration(cdoSendUsingMethod) = 2
            .Configuration(cdoSMTPServer) = "smtp.gmail.com"
            .Configuration(cdoSMTPServerPort) = 465
            .Configuration(cdoSMTPusessl) = True
            .Configuration(cdoSMTPconnectiontimeout) = 60
            .Configuration(cdoSMTPauthenticate) = 1
            .Configuration(cdosendusername) = "breda@sanders-meubelstad.nl"
            .Configuration(cdosendpassword) = "Cl@rabella"
            .Configuration.Fields.Update
            .AddAttachment TempFilePath
            .To = Sheets(mail).Range("E1").Value
            .From = """ Bestanden verzonden "" <test@gmail.com>"
            .ReplyTo = Sheets(mail).Range("Z1").Value
            .Subject = "Verzonden bestanden " & Sheets(mail).Range("C1").Value
            .TextBody = strbody
            .send
        End With
    Next
End Sub
 
Bij mij loopt alles naar wens (per berciht 1 bijlage) met :

Code:
Sub M_webmail_snb()
  c00 = Dir("G:\OF\*.pdf")
  
  For j = 1 To 2
      With CreateObject("CDO.Message")
        .Configuration(cdoSendUsingMethod) = 2
        .Configuration(cdoSMTPServer) = "smtp.gmail.com"
        .Configuration(cdoSMTPServerPort) = 465
        .Configuration(cdoSMTPUseSSL) = True
        .Configuration(cdoSMTPAuthenticate) = 1
        .Configuration(cdoSendUserName) = "xxx@gmail.com"
        .Configuration(cdoSendPassword) = "yyy"
        .Configuration.Fields.Update
        .addattachment "G:\OF\" & c00
        .To = "zzz@gmail.com"
        .From = "xxx@gmail.com"
        .Subject = "laatste test 4"
        .TextBody = "inhoud4"
        .send
      End With
      c00=Dir
  Next
End Sub
 
Laatst bewerkt:
@WB, @snb

Beste,

De uitdaging is nu dat de eerste inderdaad het unieke bestand toegestuurd krijgt, de 2e krijgt zijn unieke bijlage ook maar ook die van de eerste. En ja de 3e krijgt 3 bestanden. Het is de bedoeling dat elk alleen hun eigen bestand toegestuurd krijgen en niet die van de ander.
 
Tja, het kan ook rangorde gevoelige informatie zijn.

De eerste mag niet alles weten.
De tweede een beetje meer.
De derde weet alles.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan