转换Word文档为PDF格式发送,如Outlook附件

问题描述 投票:1回答:4

我想我的Word文档转换为PDF格式,并把它作为附件为我建造Outlook电子邮件的一部分。

我曾试过把我的SaveAs2行的末尾,改变和附加文件格式为PDF,但是,试图打开它不会显示该文件,并给了我一个消息时,该文件并没有增加,“PDF”所有这是在作为附件发送代码。

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
vba ms-word outlook word-vba outlook-vba
4个回答
1
投票

改变你的saveAs2这种方式。

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

编辑

要使用的路径和补充的是作为附件

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

和依恋

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

2
投票

随着SaveAs2您可以指定的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是wdFormatPDF或17


1
投票

如果您需要将多个Word文件转换为其他格式,如TXT,RTF,HTML或PDF,运行下面的脚本。

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

结果保存的是动态创建的文件夹中,并包含您刚才转换的文件相同的文件夹。


0
投票

我想知道,如果你能张贴此解决方案的所有代码。我一直在寻找这样的事情了一会儿,所有的我的经验是在PowerShell中。我知道这个我一般是令人难以接受的,但我跑出来的选项

© www.soinside.com 2019 - 2024. All rights reserved.