• 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.

Automatische mail

Status
Niet open voor verdere reacties.
Ik zie het inderdaad, ik zal in het vervolg eerst beter kijken voor ik een vraag stel. Komt blijkbaar erg irritant over.

Toch bedankt voor je reactie. Nu weet ik in ieder geval wat er is mis gaat.

Groet Richy.
 
Hallo,

Goede tip VenA, het werkt weer.

Nog even terug naar een vraag die ik al gesteld heb, is het mogelijk om specifieke cellen in de mail weer te geven (bijvoorbeeld A5 tmt E5)?
Zodat ik deze gegevens in de mail krijg.

Groet Richy.

ps, heb een beetje geduld met mij, heb af en toe een duwtje nodig :(
 
Laatst bewerkt:
Geduld is het probleem niet. Het niet toepassen van de aangedragen oplossingen en opmerkingen wel. Met een bijvoorbeeld in de vraag maak je ook niet veel duidelijk. Obv van deze bijvoorbeeld kan je zoiets gebruiken

Code:
Sub VenA()
With CreateObject("Outlook.Application").CreateItem(0)
    .To = "abasbest@gmail.com"
    .Subject = "Er verloopt een certificaat binnen nu en 7 dagen in"
    For Each Sh In Sheets
        For Each Cl In Sh.Columns(13).SpecialCells(2)
            If IsDate(Cl) And Val(Cl.Value) - 7 <= Date And Cl.Offset(, 2) <> "verzonden" Then
                .Body = .Body & Sh.Name & "!" & Cl.Offset(, -12).Resize(, 5).Address & " " & Cl.Offset(, -12) & Cl.Offset(, -11) & Cl.Offset(, -10) & Cl.Offset(, -9) & Cl.Offset(, -8) & vbLf
                Cl.Offset(, 2) = "verzonden"
            End If
        Next Cl
    Next Sh
    .Display
End With
End Sub

Nb. Gebruik geen samengevoegde cellen. Dit kan rare of verkeerde uitkomsten geven of de code werkt totaal niet meer.
 
Goed, ik snap het nu even niet meer. De code van VenA heb ik overgenomen, aangepast naar de kolommen die datum bevatten, het aantal kolommen en sheets aangepast. Maar toch krijg ik een fout melding. Had vanmorgen wel een werkende versie, echter blijft het mail bericht dan leeg, terwijl er toch data zijn die verlopen zijn.

Onderstaand heb ik aangepast;
Code:
Private Sub Workbook_Open()
    Dim Sh
    Dim Cl As Range
    

With CreateObject("Outlook.Application").CreateItem(0)
    .To = "abasbest@gmail.com"
    .Subject = "Er verloopt een certificaat binnen nu en 7 dagen in"
    For Each Sh In Sheets
        For Each Cl In Sh.Columns(9).SpecialCells(2)
            If IsDate(Cl) And Val(Cl.Value) - 7 <= Date And Cl.Offset(, 2) <> "verzonden" Then
                .Body = .Body & Sh.Name & "!" & Cl.Offset(, -9).Resize(, 5).Address & " " & Cl.Offset(, -8) & Cl.Offset(, -7) & Cl.Offset(, -5) _
                & Cl.Offset(, -4) & Cl.Offset(, -3) & vbLf
                Cl.Offset(, 2) = "verzonden"
            End If
        Next Cl
    Next Sh
    .Display
End With
End Sub

Bijgevoegd bestand is waar ik nu mee werk Bekijk bijlage Certificaten beheer v2.2 kopie.xlsm.

Dit bestand maakt wel een mail aan, maar geeft geen verlopen data. Bekijk bijlage Certificaten beheer v2.2.xlsm

Wat doe ik niet goed, ik begrijp het even niet :(
 
Welkom kolom is dit en waar staan de datums Sh.Columns(9).SpecialCells(2)
 
Kolom 5 staan data in die verlopen zijn, hier wil ik dus een mail van krijgen.
ik ben de weg een beetje kwijt, er zijn toch 9 kolommen waarvan in C, D, E, G en H data staan. Deze moeten gecontroleerd worden.
Wordt de huidige datum gebruikt (van vandaag) of kan ik deze zelf in een cel zetten?

Ik ben aan het stoeien geweest met verschillende waarden in de code in te geven, maar krijg elke keer een foutmelding.
Kun je misschien uitleggen wat welk deel van de code doet?

Groet Richy
 
Je hebt al een npaar keer gezegt dat je een foutmelding krijgt. Waarom zeg je er niet bij wat de melding is?
 
Fout 1004 tijdens uitvoering

er zijn geen cellen gevonden

En na Foutopsporing;

Code:
Private Sub Workbook_Open()
    Dim Sh
    Dim Cl As Range
    

With CreateObject("Outlook.Application").CreateItem(0)
    .To = "abasbest@gmail.com"
    .Subject = "Er verloopt een certificaat binnen nu en 7 dagen in"
    For Each Sh In Sheets
       [B][U] [COLOR="#FFFF00"]For Each Cl In Sh.Columns(13).SpecialCells(2)[/COLOR][/U][/B]
            If IsDate(Cl) And Val(Cl.Value) - 7 <= Date And Cl.Offset(, 2) <> "verzonden" Then
                .Body = .Body & Sh.Name & "!" & Cl.Offset(, -12).Resize(, 5).Address & " " & Cl.Offset(, -12) & Cl.Offset(, -11) & Cl.Offset(, -10) & Cl.Offset(, -9) & Cl.Offset(, -8) & vbLf
                Cl.Offset(, 2) = "verzonden"
            End If
        Next Cl
    Next Sh
    .Display
End With
End Sub

Ik zie het verband even niet meer.
 
Geen wonder, kolom 13 (M) is helemaal leeg.
 
Met welk bestand en met welke code ben je nu bezig. Ik raak de weg een beetje kwijt.
Code:
 For Each Cl In Sh.Columns(13).SpecialCells(2)
?? net was het nog colums(9) wat natuurlijk (8) moet zijn. Ook de offsets gaan niet werken.
 
Dit bestand werkt, echter heb ik hier maar 1 tabblad overgelaten.
Bekijk bijlage Certificaten beheer v2.2.xlsm

Hier wordt wel een mail aangemaakt, maar deze geeft geen verlopen data aan.


Ik zal proberen om mijn vragen uit te leggen, Een certificaat heeft een geldigheid duur, bijvoorbeeld 365 dagen, dan verloopt hij. Voor die tijd (31 dagen) wil ik graag een melding via mail krijgen met de gegevens die bij dit Certificaat horen. In een Excel formule kan dit aangegeven worden d.m.v. voorwaardelijke opmaak of een formule. Maar dan is er een referentie cel waar de waarde (datum) in staat vanwaar uit de formule rekent (bijvoorbeeld A1). Maar hier een mail uit laten aanmaken kan niet.

Wat ik in deze code niet begrijp is op basis van welke waarde hij rekent. Ik zie dat hij de Sheets en de kolommen bij langs loopt, maar begrijp niet waar hij mee vergelijkt. Op het moment dat niet alle tabbladen het zelfde aantal kolommen hebben zal deze code niet werken, Toch? En lege kolommen of tekst kolommen geeft ook een probleem. Ik heb geprobeerd om deze in de verwijzing
Code:
.Body = .Body & Sh.Name & "!" & Cl.Offset(, -12).Resize(, 5).Address & " " & Cl.Offset(, -12) & Cl.Offset(, -11) & Cl.Offset(, -10) & Cl.Offset(, -8) & Cl.Offset(, -7) & vbLf
weg te laten. Maar geen resultaat.

Kortom, ik begrijp er even niets meer van.

Ik probeer zo duidelijk mogelijk te maken wat ik in mijn hoofd heb. Lastig

groet Richy
 
Goedemorgen,

Ik krijg het verzoek om de topic afte sluiten als de vraag is opgelost, dat is hij niet. Gezien het feit dat er geen reacties meer komen (ik zal wel iets gedaan hebben wat de heren niet bevalt) ga ik deze sluiten.

Een ieder bedankt voor de genomen moeite, jammer dat het resultaat er niet is.

Ik vind het ook jammer dat er gewoon niet meer gereageerd wordt, geef dan gewoon aan dat jullie iets niet aanstaat. Bedenk wel dat het een vraag is om ondersteuning door mensen die niet zo thuis zijn in deze materie zoals jullie. Erg jammer.

Groet Richy.
 
Hoi,

Ik heb er nog even naar gekeken en er wordt gecontroleerd op kolom I:
For Each Cl In Sh.Columns(9).SpecialCells(2)

Columns(9) is kolom I en die is helemaal leeg, zoals VenA al zei.
Dan gebeurt er uiteraard niets.

Je hebt niet op zijn opmerking gereageerd en de aanpassing kennelijk niet gedaan omdat nog steeds naar de verkeerde kolom wordt gekeken in de code. Er wordt niet meer gereageerd omdat men op het resultaat van de aanpassing wacht.

Maak er eens dit van:
Code:
Private Sub Workbook_Open()
    With CreateObject("Outlook.Application").CreateItem(0)
        .To = "abasbest@gmail.com"
        .Subject = "Er verloopt een certificaat binnen nu en 31 dagen in"
        For Each Sh In Sheets
            For Each Cl In Sh.Columns(8).SpecialCells(2)
                If IsDate(Cl) And Val(Cl.Value) - 31 <= Date And Cl.Offset(, 1) <> "verzonden" Then
                    .Body = .Body & Sh.Name & "!" & Cl.Offset(, -7).Resize(, 5).Address & " " & Cl.Offset(, -7) & vbLf
                    Cl.Offset(, 1) = "verzonden"
                End If
            Next Cl
        Next Sh
        .Display
    End With
End Sub

De mail body ziet er dan zo uit:
Personeel!$A$5:$E$5 Kl
Personeel!$A$6:$E$6 s
Personeel!$A$7:$E$7 s
Personeel!$A$8:$E$8 s
Personeel!$A$9:$E$9 s
Personeel!$A$10:$E$10 s
Personeel!$A$11:$E$11 s
Personeel!$A$12:$E$12 s
Personeel!$A$13:$E$13 s
Personeel!$A$17:$E$17 a
Personeel!$A$19:$E$19 a
Personeel!$A$20:$E$20 a
Personeel!$A$21:$E$21 a
Personeel!$A$22:$E$22 a
Personeel!$A$23:$E$23 a
Personeel!$A$24:$E$24 a
Personeel!$A$25:$E$25 a
Personeel!$A$26:$E$26 a
Personeel!$A$27:$E$27 a
Personeel!$A$28:$E$28 a
Personeel!$A$29:$E$29 a
Personeel!$A$30:$E$30 a
Personeel!$A$31:$E$31 a
Personeel!$A$35:$E$35 a
Personeel!$A$36:$E$36 a

De cellen in kolom I bevatten dan het woord Verzonden.
 
Laatst bewerkt:
Dan berust alles op communicatiestoornis, ik ga er mee aan de slag. Bedankt maar weer.
 
Top, dit is het.

Paar vragen nog, welke datum gebruikt deze code als basis om mee te vergelijken? is dat de datum van het systeem (windows)? En in plaats van de cellen aan te geven kunnen ook de waarden van deze cellen getoond worden in de Body?

Dus bijvoorbeeld:
Personeel!NPU 5000 1215 1-1-2016 6-1-2016 Afgekeurd
 
De vergelijking is inderdaad met de systeemdatum (<= Date). En ja, in plaats van de cellen kan je ook de waarde van de cel in de body zetten. In de code die ik stuurde staat nu als laatste de waarde van de cel in kolom A uit het document dat je plaatste.

Probeer het dus eens zo:
Code:
Private Sub Workbook_Open()
    With CreateObject("Outlook.Application").CreateItem(0)
        .to = "abasbest@gmail.com"
        .Subject = "Er verloopt een certificaat binnen nu en 31 dagen in"
        For Each Sh In Sheets
            regel = vbNullString
            For Each cl In Sh.Columns(8).SpecialCells(2)
                If IsDate(cl) And Val(cl.Value) - 31 <= Date And cl.Offset(, 1) <> "verzonden" Then
                    For i = 1 To 9
                        If i = 1 Or i = 9 Then
                            regel = regel & Cells(cl.Row, i).Value
                        Else
                            regel = regel & " / " & Cells(cl.Row, i).Value
                        End If
                    Next i
                    cl.Offset(, 1) = "verzonden"
                    regel = regel & vbCrLf
                End If
            Next cl
            .Body = .Body & regel
        Next Sh
        .Display
    End With
End Sub
 
Laatst bewerkt:
goedemorgen,

heeft even geduurd, maar het werkt goed. Iedereen bedankt voor de hulp!

groet Richy
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan