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

Vanuit excel mailen op bepaald tijdstip

Status
Niet open voor verdere reacties.

Jonathan1

Gebruiker
Lid geworden
23 jul 2020
Berichten
52
Beste,

Ik zou graag het volgende verwezenlijken:
Ik heb een xlsm bestand dat ik automatisch wil omzetten in pdf en daarna als bijlage in een mail die automatisch gegeneerd wordt.
Dit alles wil ik laten gebeuren met een "gesloten" bestand.
Echter loop ik tegen het probleem aan dat hij bij het testen van de module correct werkt, maar het op een bepaalde tijdstip "openen, module uitvoeren en weer sluiten" (zonder dat dit zichtbaar is) lukt me niet.

In de ThisWorkbook heb ik volgende code:
Code:
Sub Test_starten()
Application.OnTime "12:20:00", "H:\Mijn Documenten\Test A3\invulbestand Test.xlsm!Mail.Test"
End Sub

De module voor het creëren van de mail met pdf als bijlage is de volgende:
Code:
Sub Mail()
    Dim Pad As String
    Dim Bst As String
    Dim Otv As String
    
    Dim OutApp As Object
    Dim OutMail As Object
    
    Pad = "H:\Mijn Documenten\Test A3"
    Otv = "blala@blala.blala"
    Bst = "Test " & Format(Now, "dd-mm-yyyy   hh.mm") & ".pdf"
    Sheets("Test).Range("A1:W20").ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=Pad & "\" & Bst, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    
    With OutMail
        .to = Otv
        .CC = ""
        .BCC = ""
        .Subject = "Test"
        .Body = "zie bijlage"
        .Attachments.Add Pad & "\" & Bst
        .Send
        '.Display
    End With
    ActiveWorkbook.Close Savechanges:=True
End Sub

Ik heb nog geen einde applicatie tijd bijgezet omdat de start niet werkt.
Mijn logica is dat ik via de macro het bestand oproep daarna de mail macro laat draaien en daarna de applicatie weer sluit.

Wat is er mis?
 
Laatst bewerkt:
Ik zie geen link tussen de routine die je aanroept in Application.OnTime en de Sub Mail die je plaatste.
 
Dank je.
ik heb de site bekeken en dit werkt nu in de test fase in de aantal seconde die ik ingesteld heb.
Alleen voert hij de mail module niet uit. Ik krijg de foutmelding dat de macro niet beschikbaar is.

Hoe kan dat?
 
Het gaat ook niet om de tijd, je roept niet de juiste module aan, zoals de melding al zegt.
 
Nou schiet mij maar lek want ik zie het niet.
Ik heb onderstaande ook geprobeerd maar blijf dezelfde foutmelding krijgen;
Code:
Sub Test_starten()
Application.OnTime "12:20:00", "H:\Mijn Documenten\Test A3\invulbestand Test.xlsm!Test.Mail"
End Sub

De module heet volgens mij toch sub Mail?
 
Waarom verwijs je dan naar (1) mail.test en (2) test.mail?
 
Omdat ik dacht dat ik de volgorde fout had staan. Vandaar dat ik geprobeerd heb om op deze manier de juiste module aan te roepen.
Tevergeefs.
 
De module hoeft er niet bij. Daarnaast zal je geen macro kunnen aanroepen in een gesloten document.
 
Oke dit maakt me nog meer in de war.
Hoe kan je dan een gesloten macro aanroepen.
Tevens test ik het bestand terwijl hij open is.
 
Wat ik al eerder zei, ik ken je documenten niet en het lijkt of je 2 documenten gebruikt.
Waarom zou je anders de naam en pad van een document meegeven in Application.OnTime?
 
Nee het is 1 bestand.
Na wat opzoekwerk vond ik deze code voor het aanroepen van de module als het document gesloten is. Want dat is namelijk mijn bedoeling. Op een bepaalde dag in de maand op een bepaald uur wil ik dat het bestand als pdf verstuurd wordt zonder dat daar manuele handeling voor nodig is.
 
Application.OnTime werkt alleen als je dat document op hebt in Excel.
Het is geen Task Scheduler.
 
Dus het niet niet mogelijk om een macro in een gesloten excel op te starten?
 
Nee, dat gaat niet.
Je kan wel een VB Scriptje maken die Excel start, het document opent en dan de macro aanroept.
Dat VB Scriptje kan je dan door de Windows Task Scheduler laten starten.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan