2016-08-11 1 views
1

Я хотел бы преобразовать Word Word в pdf и отправить его как вложение как часть моего сконструированного письма Outlook.Преобразование слова doc в pdf и отправка как приложение в Outlook

Я попытался добавить «pdf» в конце моей строки SaveAs2, которая изменила и вложила формат файла в формате 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 

ответ

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 

И Attahcment

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

Код выглядит так, как мне нужно, но я думаю, что моя другая проблема заключается в том, как создать путь для сохранения в текущей папке и как добавить его в качестве вложения в этот код. В настоящее время я использую .Attachment.Add Doc.FullName, который по-прежнему вытаскивает файл слова вместо pdf. –

+0

@ReyTaino см. Обновленный ответ – 0m3r

+1

Good call @ Om3r - мне нужно было немного его настроить, сделав Path a Const .. Я продолжал получать «Ошибка компиляции - не могу назначить свойство только для чтения», с текущим путем , Спасибо за помощь. –

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

0

Если вам нужна т o конвертировать несколько файлов 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 

Результаты сохраняются в папке, которая динамически создается и в той же папке, которая содержит документы, которые вы просто преобразованы.

Смежные вопросы