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

E-Mail verzenden als vervaldatum is bereikt in Excel bij gesloten map

Status
Niet open voor verdere reacties.

carloschouw

Gebruiker
Lid geworden
15 jun 2015
Berichten
225
Goedemiddag,

Ik heb een vraagje over een emailfunctie wanneer er een cel niet ingevuld is en er een datum verstreken is. Onderstaand kwam ik een code tegen zoiets dergelijks zou kunnen doen echter zoek ik iets om dit uit voeren bij losse, gesloten Excel mappen.

Voorbeeld waar ik naar op zoek ben:

- Invul Excel bestand (bijlage) is Map1.xls Hierin moet je een datum invullen. Wanneer iemand het bestand opslaat zónder invullen van een datum dan zou de volgende dag (of 2, 3 dagen later) een email verzonden moeten worden dat men in deze map vergeten is een datum in te vullen. De opgeslagen map zonder datum is dan wel gesloten waardoor ik vermoed dat een dergelijke vraag niet mogelijk is?

Code:
Public Sub CheckAndSendMail()
'Updated by Extendoffice 2018/11/22
    Dim xRgDate As Range
    Dim xRgSend As Range
    Dim xRgText As Range
    Dim xRgDone As Range
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xLastRow As Long
    Dim vbCrLf As String
    Dim xMailBody As String
    Dim xRgDateVal As String
    Dim xRgSendVal As String
    Dim xMailSubject As String
    Dim i As Long
    On Error Resume Next
    Set xRgDate = Application.InputBox("Please select the due date column:", "***ools For Excel", , , , , , 8)
    If xRgDate Is Nothing Then Exit Sub
    Set xRgSend = Application.InputBox("Please select the recipients?email column:", "***ools For Excel", , , , , , 8)
    If xRgSend Is Nothing Then Exit Sub
    Set xRgText = Application.InputBox("Select the column with reminded content in your email:", "***ools For Excel", , , , , , 8)
    If xRgText Is Nothing Then Exit Sub
    xLastRow = xRgDate.Rows.count
    Set xRgDate = xRgDate(1)
    Set xRgSend = xRgSend(1)
    Set xRgText = xRgText(1)
    Set xOutApp = CreateObject("Outlook.Application")
    For i = 1 To xLastRow
        xRgDateVal = ""
        xRgDateVal = xRgDate.Offset(i - 1).Value
        If xRgDateVal <> "" Then
        If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
            xRgSendVal = xRgSend.Offset(i - 1).Value
            xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
            vbCrLf = "<br><br>"
            xMailBody = "<HTML><BODY>"
            xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
            xMailBody = xMailBody & "Text : " & xRgText.Offset(i - 1).Value & vbCrLf
            xMailBody = xMailBody & "</BODY></HTML>"
            Set xMailItem = xOutApp.CreateItem(0)
            With xMailItem
                .Subject = xMailSubject
                .To = xRgSendVal
                .HTMLBody = xMailBody
                .Display
                '.Send
            End With
            Set xMailItem = Nothing
        End If
    End If
    Next
    Set xOutApp = Nothing
End Sub
 

Bijlagen

Waarom daar niet gewoon bij het sluiten van het document op controleren?
 
Daar had ik ook aan zitten denken maar zit een beetje met een uitdaging dat het bestand invullen door een persoon, het controleren door een andere persoon uitgevoerd wordt.

Het idee dat er gecontroleerd wordt op een specifieke cel die ingevuld moet worden door de persoon die moet controleren kom ik wel uit alleen moet er wel een melding naar de contolerende persoon gedaan worden. Waar ik aan zat te denken:

- Een specifieke cel moet verplicht ingevuld zijn voordat deze opgeslagen kan worden. Dit moet wel binnen een x-tijd uitgevoerd zijn. Wanneer dit niet binnen de aangegeven tijd uitgevoerd is moet er een email verzonden worden. Idee zou kunnen zijn -> Excel werkbestand staat b.v. 4 uur open zonder activiteit = email verzenden met een melding dat het bestand nog open staat en opgeslagen dient te worden.

Is zoiets te realiseren?
 
Ik kom wel wat topics tegen waarin een optie is dan na x-tijd het Excel werkbestand gesloten worden bij inactiviteit:

https://www.helpmij.nl/forum/showthread.php/398549-Automatisch-afsluiten-van-bestand-na-X-tijd

https://www.helpmij.nl/forum/showthread.php/936499-Excel-of-werkblad-automatisch-opslaan-en-afsluiten-na-5-minuten-inactiviteit

Maar dan zou in plaats van afsluiten een email verzonden moeten worden met een melding dat het bestand nog open staat. Deze dient handmatig gesloten te worden
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan