Rey Taino
Rey Taino

Reputation: 179

Convert word doc to pdf and send as attachment in Outlook

I would like to convert my Word Doc to a pdf and send it as an attachment as part of my constructed Outlook email.

I have tried adding ,".pdf" at the end of my SaveAs2 line, which changed and attached the file format as pdf, however, when attempting to open the file it does not display and gives me a message that the file did not have all it's code when sent as an attachment.

Private Sub emailbutton_Click()
        'No-option email sending
        Dim OL              As Object
        Dim EmailItem       As Object
        Dim Doc             As Document

        Application.ScreenUpdating = False
        Set OL = CreateObject("Outlook.Application")
        Set EmailItem = OL.CreateItem(olMailItem)
        Set Doc = ActiveDocument

        If VName.Value = "" Then
            Doc.SaveAs ("Quotation_Blank 2016")
        Else
           Doc.SaveAs2 ("QFORM" & "_" & JNumber.Value & "_" & VName.Value)

        End If

       With EmailItem
        .Display
        End With
    '        Signature = EmailItem.body


        With EmailItem
            .Subject = "QFORM" & "_" & JNumber.Value & "_" & VName.Value

            'HTMLbody
            msg = "<b><font face=""Times New Roman"" size=""4"" color=""blue"">INTEGRATED ASSEMBLY </font></b><br>" _
            & "   1200 Woodruff Rd.<br>" _
            & "   Suite A12<br>" _
            & "   Greenville, SC 29607<br><br>" _
            & "We have recently released subject project, which will contain assemblies to be outsourced. You have been selected to build these assemblies according to the attachment. <br><br>" _
            & "As part of this process, please review the quotation form attached and indicate your acceptance. If adjustments and-or corrections are required, please feel free to contact us for quick resolution. <br><br>" _
            & "<b><font face=""Times New Roman"" size=""4"" color=""Red"">NOTE: </font></b>" _
            & "The information on attached quotation form is not a contract and only an estimate of predetermined costs per hourly rate for outsource assemblies. <br><br>" _
            & "*******For your records you may wish to print out the completed quote form. <br><br>" _
            & "Thank you, <br><br>" _
            & "<b>HARTNESS INTERNATIONAL </b><br>" _
            & "H1 Production Control <br>" _
            & vbNewLine & Signature

            .HTMLBody = msg & .HTMLBody

            If VName.Value = "INTEGRATED ASSEMBLY" Then
                .To = "Email1.com;"
                .CC = "Email2.com;" & "Email3.com;"
                .Importance = olImportanceNormal 'Or olImportanceHigh Or         olImportanceLow
                .Attachments.Add Doc.FullName
                .Display
             ElseIf VName.Value = "LEWALLEN" Then
                .To = "Email1.com;"
                .CC = "Email2.com;" & "Email3.com;"
                .Importance = olImportanceNormal 'Or olImportanceHigh Or         olImportanceLow
                .Attachments.Add Doc.FullName
                .Display

             End If
        End With




        Application.ScreenUpdating = True

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

    End Sub

Upvotes: 1

Views: 5226

Answers (4)

user3487244
user3487244

Reputation: 147

I was wondering if you could post all your code for this solution. I have been looking for something like this for a while and all my experience is on powershell. I know this i generally frowned upon but i am running out of options

Upvotes: 0

niton
niton

Reputation: 9179

With SaveAs2 you can specify FileFormat

https://msdn.microsoft.com/en-us/library/office/ff836084.aspx

expression .SaveAs2(FileName, FileFormat, LockComments, Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended, EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter, Encoding, InsertLineBreaks, AllowSubstitutions, LineEnding, AddBiDiMarks, CompatibilityMode)

https://msdn.microsoft.com/en-us/library/office/ff839952.aspx

FileFormat is wdFormatPDF or 17

Upvotes: 2

ASH
ASH

Reputation: 20322

If you need to convert multiple Word files to other formats, like TXT, RTF, HTML or PDF, run the script below.

Option Explicit On

Sub ChangeDocsToTxtOrRTFOrHTML()
    'with export to PDF in Word 2007
    Dim fs As Object
    Dim oFolder As Object
    Dim tFolder As Object
    Dim oFile As Object
    Dim strDocName As String
    Dim intPos As Integer
    Dim locFolder As String
    Dim fileType As String
    On Error Resume Next

    locFolder = InputBox("Enter the folder path to DOCs", "File Conversion", "C:\Users\your_path_here\")
    Select Case Application.Version
        Case Is < 12
            Do
                fileType = UCase(InputBox("Change DOC to TXT, RTF, HTML", "File Conversion", "TXT"))
            Loop Until (fileType = "TXT" Or fileType = "RTF" Or fileType = "HTML")
        Case Is >= 12
            Do
                fileType = UCase(InputBox("Change DOC to TXT, RTF, HTML or PDF(2007+ only)", "File Conversion", "TXT"))
            Loop Until (fileType = "TXT" Or fileType = "RTF" Or fileType = "HTML" Or fileType = "PDF")
    End Select

    Application.ScreenUpdating = False
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set oFolder = fs.GetFolder(locFolder)
    Set tFolder = fs.CreateFolder(locFolder & "Converted")
    Set tFolder = fs.GetFolder(locFolder & "Converted")

    For Each oFile In oFolder.Files
        Dim d As Document
        Set d = Application.Documents.Open(oFile.Path)
        strDocName = ActiveDocument.Name
        intPos = InStrRev(strDocName, ".")
        strDocName = Left(strDocName, intPos - 1)
        ChangeFileOpenDirectory tFolder
        Select Case fileType
            Case Is = "TXT"
                strDocName = strDocName & ".txt"
                ActiveDocument.SaveAs FileName:=strDocName, FileFormat:=wdFormatText
        Case Is = "RTF"
                strDocName = strDocName & ".rtf"
                ActiveDocument.SaveAs FileName:=strDocName, FileFormat:=wdFormatRTF
        Case Is = "HTML"
                strDocName = strDocName & ".html"
                ActiveDocument.SaveAs FileName:=strDocName, FileFormat:=wdFormatFilteredHTML
        Case Is = "PDF"
                strDocName = strDocName & ".pdf"
                ActiveDocument.ExportAsFixedFormat OutputFileName:=strDocName, ExportFormat:=wdExportFormatPDF
        End Select
        d.Close
        ChangeFileOpenDirectory oFolder
    Next oFile
    Application.ScreenUpdating = True

End Sub

The results are saved in a folder that is dynamically created and in the same folder that contains the documents that you just converted.

Upvotes: 1

0m3r
0m3r

Reputation: 12499

Change your saveAs2 this way.

If VName.Value = "" Then
    Doc.SaveAs ("Quotation_Blank 2016")
Else
    Doc.ExportAsFixedFormat OutputFileName:="QFORM" & "_" & JNumber.Value , _
    ExportFormat:=wdExportFormatPDF
End If

Edit

To use path & add is as attachment

If VName.Value = "" Then
    Doc.SaveAs ("Quotation_Blank 2016")
Else
    Path = "C:\Temp\"
    FileName = "QFORM" & "_" & JNumber.Value & "_" & VName.Value
    Doc.ExportAsFixedFormat OutputFileName:=Path & FileName, _
    ExportFormat:=wdExportFormatPDF
End If

And Attahcment

        .Attachments.Add Path & FileName & ".pdf"

Upvotes: 1

Related Questions