Word document als PDF verzenden dmv VBA

Status
Niet open voor verdere reacties.

hryttel

Gebruiker
Lid geworden
9 mrt 2008
Berichten
85
Beste Helpers,

Ik heb een Sjabloon gemaakt in word, met verzend knop en alles werkt prima.
Nu wil ik graag dat hetzelfde document verstuurd wordt als PDF in plaats van Doc.
Is dit mogelijk om in te bouwen in de VBA?
Voorbeeld: sjabloon wordt aangeroepen, vervolgens wordt de invulvelden ingevuld en uiteindelijk drukt men op de verzend knop. Het document wordt verzonden via outlook. Tot zover gaat het goed. Nu wil ik dat het document verzonden wordt als PDF i.p.v. Doc zonder dat jij als gebruiker eerst het document op moet slaan als PDF en dan versturen.:(

Mvg,
Henning
 
Edmoor,

Bedankt, helaas werkt het niet in word.
Ook al pas ik de code aan ipv 'ActiveSheet.ExportAsFixedFormat in 'ActiveDocument.ExportAsFixedFormat.
plus de rest van excel aanduidingen aanpassen voor word document. loopt het vast op 'Type:

Mvg,
Henning
 
Het werkt hier prima, maar je moet wel de Microsoft Outlook Object Library in de verwijzingen van Word VBA aanvinken.
De versie van Office waarmee je werkt zou ook nog belangrijk kunnen zijn. Ik werk met Office 2010.
Ik heb het dan over de eerste code op die pagina en heb deze totaal onveranderd gebruikt.
 
Bedankt voor je snelle reactie!
Ik gebruik ook 2010, ik ga morgen weer verder.:)

Mvg,
Henning
 
Edmoor,

Het werkt idd, was het niet dat het de bedoeling is dat het document verzonden wordt als PDF file en niet als docx.
Het verzenden had ik al ingeregeld.

[ Private Sub CommandButton1_Click()

CommandButton1.Enabled = False
'CommandButton1.Caption = "VERZONDEN"

Dim OL As Object
Dim EmailItem As Object
Dim Doc As Document

On Error Resume Next

' Controleren of Outlook gestart is
Set appOutlook = GetObject(, "Outlook.Application")
If Err <> 0 Then
' Outlook is niet gestart
Set appOutlook = CreateObject("Outlook.Application")
bStart = True
End If

' Nieuw e-mailbericht maken
Application.ScreenUpdating = False
Set OL = CreateObject("Outlook.Application")
Set EmailItem = OL.CreateItem(olMailItem)
Set Doc = ActiveDocument
Doc.SaveAs "Kandidaat voor een bloemetje"

Const SaveRoot = "C:\Temp\"
'Make a copy of the file/Open it/Mail it/Delete it
'If you want to change the file name then change only TempFileName
TempFilePath = Environ$("temp") & "\"
TempFileName = "Copy of " & Doc.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss")
FileExtStr = "." & LCase(Right(Doc.Name, _
Len(Doc.Name) - InStrRev(Doc.Name, ".", , 1)))

'Op dit stuk loop ik vast!

' Create the attachment
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
ActiveDocument.Path & "\" & ActiveDocument.Name & ".pdf", ExportFormat:= _
wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False


Doc.SaveCopyAs TempFilePath & TempFileName & FileExtStr
Set Doc = ActiveDocument.Open(TempFilePath & TempFileName & FileExtStr)

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

On Error Resume Next

With EmailItem
.Subject = "Verzoek om een bloemetje"
.Body = "Goedendag," & vbCrLf & _
"" & vbCrLf & _
"Hierbij het verzoek om een bloemetje te sturen." & vbCrLf & _
"" & vbCrLf & _
"Met vriendelijke groet," & vbCrLf & _
"Jan Jaap"
.BCC = ""
.To = "bloemist@bloemist.nl"
.Importance = olImportanceNormal 'Or olImprotanceHigh Or olImprotanceLow
.Attachments.Add Doc.FullName
.Send
End With

' Loop 1 sec om Outlook de kans te geven
' het e-mailbericht te versturen
s = Timer
Do While Timer < s + 1
DoEvents
Loop


Application.ScreenUpdating = True

Set Doc = Nothing
Set OL = Nothing
Set EmailItem = Nothing

MsgBox "Mail verzonden bedankt! ;-)"

End Sub]




Groeten,
Henning
 
Laatst bewerkt:
Wat bedoel je met: "'Op dit stuk loop ik vast! "?
Wat gebeurd daar dan?
 
Dat is het stuk waar het word document omgezet zou moeten worden naar PDF.
Alleen lijkt het erop dat het overgeslagen wordt.
De code zo als die hier staat werkt uitstekend afgezien van het PDF stuk.

Mvg,
Henning
 
Dat stukje code doet het hier prima. Mijn document heet Doc1.docx en de code maakt bij mij in de Mijn Documenten map dan een PDF aan met de naam Doc1.docx.pdf.
 
Gebruik je dan alleen dat stukje code?
Het is mijn bedoeling dat het document, zo als je kunt zijn in de code, in de temp opgeslagen wordt en als PDF verzonden wordt waarna het weer verwijderd wordt. En dat lukt mij niet.

Henning
 
Ik heb even dat stukje code getest inderdaad. je zult wel wat zaken moeten aanpassen omdat de rest van de code uitgaat van een andere map en een andere bestandsnaam.
Mocht je er niet uit komen dan wil ik dat wel voor je doen.
 
Laatst bewerkt:
Hint:
In dat stukje code staat: ActiveDocument.Path & "\" & ActiveDocument.Name & ".pdf"
Terwijl de rest van de code werkt met de variabelen TempFilePath,TempFileName en FileExtStr met andere waarden.
 
Ik heb even zitten puzzelen, maar lukken wil het niet.
Mijn wens is dat de gehele afhandeling in een temp omgeving plaats vind, is dat mogelijk?
 
Ik zal 'm wel voor je herschrijven maar dat gaat dit weekend niet lukken.
Dan zul je even een paar dagen geduld moeten hebben, tenzij iemand anders hier me voor is.
 
Als dat zou kunnen graag. Het heeft geen haast.
Alvast bedankt.

Goed weekend,
Henning
 
Door gewijzigde afspraken had ik wat meer tijd. Bij deze de code voor achter je knop.
Code:
Private Sub CommandButton1_Click()
    CommandButton1.Enabled = False
    'CommandButton1.Caption = "VERZONDEN"

    Dim OL As Object
    Dim EmailItem As Object
    Dim Doc As Document
    Dim docName As String
    Dim pdfPath As String

    On Error Resume Next

    'Controleren of Outlook gestart is
    Set appOutlook = GetObject(, "Outlook.Application")
    If Err <> 0 Then
        'Outlook is niet gestart
        Set appOutlook = CreateObject("Outlook.Application")
        bStart = True
    End If

    'Document opslaan
    Set Doc = ActiveDocument
    docName = "Kandidaat voor een bloemetje"
    Doc.SaveAs docName
    
    'Document opslaan als PDF in de temp map
    pdfPath = Environ("temp") & "\"
    ActiveDocument.ExportAsFixedFormat _
        OutputFileName:=pdfPath & docName & ".pdf", _
        ExportFormat:=wdExportFormatPDF

    'Nieuw e-mailbericht object maken
    Application.ScreenUpdating = False
    Set OL = CreateObject("Outlook.Application")
    Set EmailItem = OL.CreateItem(olMailItem)

    'Maak een Outlook object en een nieuw mail bericht en verzend deze
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With EmailItem
        .Subject = "Verzoek om een bloemetje"
        .Body = "Goedendag," & vbCrLf & "" & vbCrLf & _
         "Hierbij het verzoek om een bloemetje te sturen." & vbCrLf & _
         "" & vbCrLf & _
         "Met vriendelijke groet," & vbCrLf & _
         "Jan Jaap"
        .BCC = ""
        .To = "bloemist@bloemist.nl"
        .Attachments.Add pdfPath & docName & ".pdf"
        .Send
    End With

    'Loop 1 sec om Outlook de kans te geven het e-mailbericht te versturen
    s = Timer
    Do While Timer < s + 1
        DoEvents
    Loop

    'Opruimen
    Application.ScreenUpdating = True
    Set Doc = Nothing
    Set OL = Nothing
    Set EmailItem = Nothing
    Set Outapp = Nothing
    Set Outmail = Nothing

    MsgBox "Mail verzonden bedankt! ;-)"

End Sub
 
Laatst bewerkt:
Graag gedaan :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan