Convert word doc to pdf and send as attachment in Outlook

…衆ロ難τιáo~ 提交于 2020-06-28 17:43:37

问题


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

回答1:


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"



回答2:


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




回答3:


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.




回答4:


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



来源:https://stackoverflow.com/questions/38899331/convert-word-doc-to-pdf-and-send-as-attachment-in-outlook

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!