E-mail versturen naar postvak uit

  • Onderwerp starter Onderwerp starter Roma
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.
Dan lijkt het me duidelijk dat je ergens een Next hebt gebruikt die er niet hoort of een Next hebt gedaan bij een onjuist object.
 
Hier zit de fout in
Code:
Function MailAdressen() As String
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Worksheets
        If LCase(sh.Name) <> "medewerkers" Then
            MailAdressen = MailAdressen & sh.Range("A1") & ";"
            
  For Each cel In [=mailcode]
        a = medewerkers.Cells(cel.Row, 9).Value
        If cel.Value = "e" And a <> "" Then
            emailadres = a: x = x + 1
                      
    Next sh
    End If
    Next
    MailAdressen = Left(MailAdressen, Len(MailAdressen) - 1)
    End If
End Function
 
Ja, dat toegevoegde stukje klopt helemaal niets van.
 
Ik zie precies wat je wilt bereiken. Maar in eerdere vragen was het verzoek om van ieder blad uit cel A1 de waarde te lezen wat dan een mail adres is en nu wil je ineens de mail adressen uit kolom I op het blad medewerkers hebben. Programmeren luistert erg nauw dus zorg er eerst voor dat het duidelijk is wat je nu precies wilt. De mail adressen uit het blad medewerkers kolom I of de mail adressen van cel A1 van ieder ander blad. Of wellicht beide? En met welk doel dan?

Daarnaast heb ik, vanwege je toevoeging aan mijn voorbeeld, het idee dat je zelf qua VBA niet echt weet wat je doet of de aangereikte voorbeelden op Helpmij begrijpt. Als dat laatste het geval is dan kan er alleen maar voorgekauwd worden hoe hetgeen je wilt bereiken precies moet worden gedaan. Maar dat schiet natuurlijk niet op voor wat betreft je eigen leerweg op dit gebied.

Ik wil het best voor je maken, maar je hebt er niets aan als je niet begrijpt waarom het werkt en het lijkt me toch dat het je bedoeling is om er dusdanig van te leren dat je het zelf kunt doen.

Met alle respect...
 
Je hebt helemaal gelijk.
Ik weet er nog te weinig van in een korte tijd dat ik met VBA bezig ben.
Maar ik heb ondertussen wel veel geleerd en ik begrijp je reactie.
 
Dat neemt niet weg dat je hier best wel hulp kunt krijgen bij de vragen die je hebt en als je een duidelijk doelt stelt voor wat betreft dit mailing verhaal wil ik het wel voor je maken. Ik kan dan ook wel de geleverde code wat documenteren zodat duidelijk is wat er precies wordt gedaan en waarom. Wat ik wel graag wil is de indruk hebben dat je in ieder geval probeert te begrijpen hoe het in elkaar steekt.

Maar ik ben me er ook volledig van bewust dat het op enig moment een zogenoemd "Aha erlebnis" vergt, om vriend Karl Bühler er maar even bij te betrekken ;)
 
Laatst bewerkt:
Beste Edmoor,
Ik ben het volledig met je eens en ik wil het ook heel graag leren steek er ook veel tijd in.
 
Er worden hier door meerderen mooie dingen gemaakt en die kunnen heel leesbaar of bijzonder complex geschreven worden terwijl ze hetzelfde resultaat bereiken. Het is daarbij heel belangrijk om in ieder geval de basis structuur van VBA, en in dit geval VBA voor Excel te begrijpen. Wellicht dat je hier ook wat aan hebt:
http://www.excel-easy.com/vba.html

De keuze voor een site in het Engels is met opzet maar daarnaast kun je ook eens rondneuzen op de VBA website van Helpmij collega SNB:
http://www.snb-vba.eu/
 
Bedankt.
Ik ga het bestuderen.
Ook bedankt voor je inzet bij deze topic
Ron
 
Prima :) En als je wat betreft die mailing nog eens laat weten wat precies de bedoeling is dan zal ik je erbij helpen.
 
De bedoeling van deze mailing is dat de medewerkers die in de lijst staan een pdf bestand krijgen. De overige krijgen het per post(vak).
het zijn er in totaal 35. wordt aangegeven in kolom A.
Nogmaals bedankt voor je tijd en inzet.
Ron
 
Komt goed Ron. Maar het is inmiddels vrijdag en ik moet er toch om 07:00 weer uit. Dat zal dus vrijdagavond worden ;)
 
Met wat ik er tot nu toe van begrepen heb wil jij het volgende,
Je hebt 35 werkbladen (ORT1 ....ORT35) waarvan je elk afzonderlijk een pdf-file wil maken en deze dan versturen naar een medewerker.
De naam die de pdf-file moet krijgen staat op elk werkblad vermeld in F10 en het emailadres waarnaar de pdf-file moet gezonden worden staat op elk werkblad in A1.
Als dit alles correct is heb je aan onderstaande voldoende om dit met 1 druk op een knop te realiseren.
Code:
Sub tst()
    For i = 1 To 35
        With Sheets("ORT" & i)
            Fname = .Range("F10").Value & ".pdf"
            eAddress = .Range("A1").Value
            .ExportAsFixedFormat 0, ThisWorkbook.Path & "\" & Fname
        End With
        With CreateObject("Outlook.application").CreateItem(0)
            .To = eAddress
            .Subject = " ORT lijst van de afgelopen maand"
            .Body = "Bijgaand het overzicht van de afgelopen maand" _
                        & vbNewLine & vbNewLine & "met vriendelijke groet,"
            .Attachments.Add ThisWorkbook.Path & "\" & Fname
            .Send
        End With
        Kill ThisWorkbook.Path & "\" & Fname
    Next
End Sub
 
Moesten er echter werkbladen tussen zitten die niet verzonden maar bv. geprint moeten worden zit je met onderstaande goed.
Code:
Sub tst()
    sn = Sheets("medewerkers").Range("A10").CurrentRegion
    For i = 2 To UBound(sn)
        If sn(i, 1) = "e" Then tomail = tomail & sn(i, 2) & ";"
    Next
    For i = 1 To 35
        If InStr(1, tomail, Sheets("ORT" & i).Range("F10").Value, vbTextCompare) Then
            With Sheets("ORT" & i)
                Fname = .Range("F10").Value & ".pdf"
                eAddress = .Range("A1").Value
                .ExportAsFixedFormat 0, ThisWorkbook.Path & "\" & Fname
            End With
            With CreateObject("Outlook.application").CreateItem(0)
                .To = eAddress
                .Subject = " ORT lijst van de afgelopen maand"
                .Body = "Bijgaand het overzicht van de afgelopen maand" _
                        & vbNewLine & vbNewLine & "met vriendelijke groet,"
                .Attachments.Add ThisWorkbook.Path & "\" & Fname
                .Send
            End With
            Kill ThisWorkbook.Path & "\" & Fname
        Else
            Sheets("ORT" & i).Range("C10:N62").PrintPreview 'of .PrintOut
        End If
    Next
End Sub
 
@Rudi,
Bedankt voor jr reactie.
in #37 geef deeze regel een foutmelding: .Attachments.Add ThisWorkbook.Path & "\" & Fname
De bestanden hoeven niet opgeslagen te worden
Ron
 
@Noroma

Kom zelf eens in de benen !
Als die regel een foutmelding geeft ga je natuurlijk zelf op onderzoek uit en zet je voor die regel

Code:
msgbox Thisworkbook.Path
Msgbox Fname

En je zoekt uit in welke gevallen een werkboek de eigenschap .Path nog niet bevat.
En je zoekt uit in welke gevallen een padnaam met de toevoeging "\" een foute padnaam oplevert.
 
Laatst bewerkt:
Wijzig in kolom I de mailadressen in je eigen adres en klik op de knop.
Je zal zien dat dit als een zonnetje loopt. (op voorwaarde dat je het bestand eerst opslaat alvorens te gebruiken)
Je kan dan eens gaan vergelijken waarom het bij jou misloopt.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan