2012-01-10 361 views
-1

我寫了一個簡短的vbscript,打開word文檔,編輯幾個書籤並保存到一個新的.doc文件。將word文檔轉換爲pdf的vbscript

我現在需要將其轉換爲pdf文件,這很容易做到像cutePDF(通過發送給虛擬打印機),但我想自動執行該步驟。

任何人都不能幫助任何關於該過程所需的vbscript的想法,或者自動執行打印步驟或其他方法。

非常感謝

戴夫

+0

我快速谷歌搜索發現這個http://bytescout.com/products/開發者/ pdfdocscoutsdk/pdfdocscout_example_vbscript.html – 2012-01-10 16:56:27

+0

但這是從代碼創建pdf,我需要轉換我已經擁有的Word文檔。 – Dave 2012-01-10 17:00:58

回答

0

根據MS您可以節省/ PDF到Word 2010中不附加; Word 2007需要一個附件,請參閱here的VBScript代碼。無論如何,像

objDoc.SaveAs <FullPathToOutputFile>, wdFormatPDF 

應該做的伎倆,不涉及「打印機」。

對於Word的古董版本的選項(在工作/增益比序):

  1. 更新字
  2. 記錄打印到PDF打印機和端口的代碼爲VBScript
+0

不幸的是,我沒有提到,我正在使用Word 2003.任何方式與打印機方法做到這一點? – Dave 2012-01-10 17:51:23

1

我曾經寫過blog article on this matter。轉換可以按如下方式完成:

Function DocToPdf(docInputFile, pdfOutputFile) 

    Dim fileSystemObject 
    Dim wordApplication 
    Dim wordDocument 
    Dim wordDocuments 
    Dim baseFolder 

    Set fileSystemObject = CreateObject("Scripting.FileSystemObject") 
    Set wordApplication = CreateObject("Word.Application") 
    Set wordDocuments = wordApplication.Documents 

    docInputFile = fileSystemObject.GetAbsolutePathName(docInputFile) 
    baseFolder = fileSystemObject.GetParentFolderName(docInputFile) 

    If Len(pdfOutputFile) = 0 Then 
    pdfOutputFile = fileSystemObject.GetBaseName(docInputFile) + ".pdf" 
    End If 

    If Len(fileSystemObject.GetParentFolderName(pdfOutputFile)) = 0 Then 
    pdfOutputFile = baseFolder + "\" + pdfOutputFile 
    End If 

    ' Disable any potential macros of the word document. 
    wordApplication.WordBasic.DisableAutoMacros 

    Set wordDocument = wordDocuments.Open(docInputFile) 

    ' See http://msdn2.microsoft.com/en-us/library/bb221597.aspx 
    wordDocument.SaveAs pdfOutputFile, wdFormatPDF 

    wordDocument.Close WdDoNotSaveChanges 
    wordApplication.Quit WdDoNotSaveChanges 

    Set wordApplication = Nothing 
    Set fileSystemObject = Nothing 

End Function 

儘管關閉文件很重要。請注意,您需要使用PDF插件或Word 2010+的Word 2007來執行此操作。

0

Rafael使用CreateObject("Word.Application")創建新的MSWord進程。在我的系統中,這段代碼沒有正確關閉文字處理。但是這個代碼工作正確

Const wdExportAllDocument = 0 
Const wdExportOptimizeForPrint = 0 
Const wdExportDocumentContent = 0 
Const wdExportFormatPDF = 17 
Const wdExportCreateHeadingBookmarks = 1 

if Wscript.Arguments.Count > 0 Then 
    ' Get the running instance of MS Word. If Word is not running, Create it 
    On Error Resume Next 
    Set objWord = GetObject(, "Word.Application") 
    If Err <> 0 Then 
     Set objWord = CreateObject("Word.Application") 
    End If 
    On Error GoTo 0 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objFile = objFSO.GetFile(WScript.Arguments(0)) 
    Set objDoc = objWord.Documents.Open(WScript.Arguments(0),,TRUE) 

    'Export to PDF using preferred settings 
    pdf = objWord.ActiveDocument.ExportAsFixedFormat(_ 
     WScript.Arguments(1), _ 
     wdExportFormatPDF, False, wdExportOptimizeForPrint, _ 
     wdExportAllDocument,,, _ 
     wdExportDocumentContent, _ 
     False, True, _ 
     wdExportCreateHeadingBookmarks _ 
    ) 

    'Quit MS Word 
    objWord.DisplayAlerts = False 
    objWord.Quit(False) 
    set objWord = nothing 
    set objFSO = nothing 
Else 
    msgbox("You must select a file to convert") 
End If 

如果此代碼保存在word2pdf.vbs,它可以通過這個命令在CMD呼籲:

wscript word2pdf.vbs input.docx output.pdf