Word document opslaan als PDF en mailen

Status
Niet open voor verdere reacties.
Ja gaat zeker goed met de aanwijzingen en gedachtes die je geeft.
Het resultaat motiveert ook goed! dank daarvoor!

ik dacht dat ik het had gevonden, deels klopt het ook, want heb nu wel een PDF genaamd "Aanmelding Piet.pdf" maar deze mailt hij dan niet meer mee.

Code:
        DocPDF = Replace(ActiveDocument.FullName, ".docm", ".pdf")
        'ActiveDocument.ExportAsFixedFormat OutputFileName:=DocPDF,
        ActiveDocument.ExportAsFixedFormat OutputFileName:="Aanmelding " & Me.txtwnnaam, _
        ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
        wdExportOptimizeForPrint, Range:=wdExportAllDocument, Item:= _
        wdExportDocumentContent, IncludeDocProps:=False, KeepIRM:=True, _
        CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
        BitmapMissingFonts:=True, UseISO19005_1:=False
    End If
    
    strAtt = DocPDF

[B]ActiveDocument.SaveAs2[/B]
    
    Set olkApp = CreateObject("outlook.application")
    With olkApp.CreateItem(0)
        .To = strTo
        .Subject = strSubject
        .Body = strBody
        .Attachments.Add strAtt
        .Attachments.Add OpenFile
        .Send
        '.Display
    End With
   Set olkApp = Nothing

voor de werking maakt het niet uit waar ActiveDocument.SaveAs2 staat. output blijft gelijk.

Hij verstuurd het oude formulier mee en niet het nieuwe.

Door de wijziging in het bestandnaam, moet ik kijken naar de bijlage.

Code:
strAtt = DocPDF

bij
Code:
strAtt = "Aanmelding & Me.txtwnnaam"

Kan hij het bestand niet meer vinden
 
Laatst bewerkt:
En dat is volkomen logisch als je de gebruikte regels onder elkaar zet:
Code:
    DocPDF = Replace(ActiveDocument.FullName, ".docm", ".pdf")
    strAtt = DocPDF
    .Attachments.Add strAtt
Ik zie namelijk nergens waar je de OutputFileName toewijst aan strAtt. En dat moet je natuurlijk wel een keer doen...
 
Tenzij je bijlage geen extensie heeft,kan ik het mij voorstellen :). Nog afgezien van de fout die er in je code zit, heb je ook een extensie nodig.
Code:
strAtt = "Aanmelding_" & Me.txtwnnaam & ".pdf"
 
fout?
de _ in de OutputFileName:="Aanmelding " & Me.txtwnnaam"?

Hij genereert nu wel een document Aanmelding_naam.pdf
maar kan het bestand vervolgens niet meer vinden.


---------------

Opgelost met:

Code:
   strBody = "Beste collega, In de bijlage de aanmelding van een nieuwe indiensttreding. De naam is " & Me.txtwnnaam & vbLf & vbLf _
   & "test" & vbLf _
   & "en nog een regel"

is het ook mogelijk om meerdere body regels te maken?

met
Code:
   strBody = "Beste collega, In de bijlage de aanmelding van een nieuwe indiensttreding."
   strBody = "Beste collega, In de bijlage de aanmelding van een nieuwe indiensttreding."

of

Code:
   strBody = "Beste collega, In de bijlage de aanmelding van een nieuwe indiensttreding. _
Beste collega, In de bijlage de aanmelding van een nieuwe indiensttreding."

gebeurt er weinig.
 
Laatst bewerkt:
Blijkbaar heb ik ooit gereageerd in dit draadje.;)

In jouw variabele neem je het pad niet op dus kan het bestand niet gevonden worden. Aangezien je nogal veel variabelen gebruikt kan je met <F8> door de code wandelen en zien welke waarde een variabele krijgt. Een msgbox kan ook van dienst zijn.

bv msgbox strAtt
 
De variabele strAtt geeft de naam aan van het bestand.

Welke ook is gegenereerd op het moment van klikken op de button.

Het formulier met userform staat in dezelfde map als het gegenereerde document.

De foutmelding die komt is:

Kan dit bestand niet vinden. Controleer of het pad en de bestandsnaam juist zijn.
code 80070002

Hij lijkt het gegenereerde PDF bestand altijd in Mijn documenten (hier is dat H:\)
 
Laatst bewerkt:
Enig idee waar het fout gaat?

We zijn er bijna!

zou het de fout in de code zijn, die Octafish een aantal posts hierboven noemt?
 
Volgens mij is het zo simpel als dit:
Code:
    docPDF = "H:\Temp\Aanmelding " & Me.txtWNnaam & ".pdf"
    ActiveDocument.ExportAsFixedFormat OutputFileName:=docPDF, _
    ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
    wdExportOptimizeForPrint, Range:=wdExportAllDocument, Item:= _
    wdExportDocumentContent, IncludeDocProps:=False, KeepIRM:=True, _
    CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
    BitmapMissingFonts:=True, UseISO19005_1:=False
    
    With olkApp.CreateItem(0)
        .To = strTo
        .Subject = strSubject
        .Body = strBody
        .Attachments.Add docPDF
        .Attachments.Add OpenFile
        .Send
    End With
 
inderdaad!
Werkt perfect!

Beetje verder bouwend op dit verhaal:

als ik strCC toevoeg

En deze later definieer met het tekstveld in het userform: " & . Me.txtlgmail"
dan wil hij die variabele niet meenemen.
 
Ook hier geldt je maakt (dezelfde namelijk als eerder) een fout.
Code:
 & .CC = Me.txtlgmail
 
En als er meerdere velden zijn met een emailadres waar een CC naar toe moet?
Als die leeg blijven, krijg je natuurlijk de foutmelding dat het niet gevonden kan worden.

dus dan moet er iets komen als if Me.txtwgmailhra = not empty then ..

Verder werkt het echt goed!
Dank je wel!
 
Het zou schelen als je de vraag in één keer goed stelt, dan krijg je sneller een goed antwoord :). Je kunt, zoals je zelf al aangaf, met een IF..THEN..END IF controleren of een veld leeg is of niet. En daar zou ik dan een variabele bij gebruiken om de adressen in op te slaan. En die controleer je dan ook of daar wat in staat, want bij een gevuld adres heb je een scheidingsteken nodig.
Code:
If Not Me.txtwgmailhra & "" = VbNullString Then
     If Not sEmailCC = "" Then sEmailCC = sEmailCC & ";"
     sEmailCC = sEmailCC & Me.txtwgmailhra
End If
En zo werk je al je velden af.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan