簡體   English   中英

使用單詞SaveAs FileFormat的VBA宏:= wdFormatPDF創建.docx

[英]VBA macro using word SaveAs FileFormat:=wdFormatPDF creates .docx

wordTemplate = "c:\someTemplate.docx"
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
objWord.documents.Add Template:=wordTemplate, NewTemplate:=False, DocumentType:=0

'''here I iterate and do stuffs, and then:'''


With objWord.ActiveDocument
    .SaveAs Filename:=("somePath" & "aName"), FileFormat:=wdFormatPDF
    .Close
End With
With objWord
    .Quit
End With

這將產生一個.docx文件。 ¿wdFormatPDF不能給我PDF嗎?

編輯:我將.SaveAs行修改為:

.SaveAs Filename:=(Hoja1.Range("N6").Text & Hoja1.Range("A1") & ".pdf"), FileFormat:=wdFormatPDF

.SaveAs2 Filename:=(Hoja1.Range("N6").Text & Hoja1.Range("A1") & ".pdf"), FileFormat:=wdFormatPDF

但兩者都會生成無法呈現的.pdf文件。

您得到什么取決於您作為“ aName”傳遞的內容。 例如,如果它包含.docx擴展名,則您的PDF將具有無效的.docx擴展名。

無論您是使用SaveAs還是SaveAs2都沒有關系。

您需要像這樣使用SaveAs2方法(已測試ans是否有效):

wordTemplate = "c:\someTemplate.docx"
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
objWord.documents.Add Template:=wordTemplate, NewTemplate:=False, DocumentType:=0

'''here I iterate and do stuffs, and then:'''


With objWord.ActiveDocument

    .SaveAs2 "C:\test\MyDoc.pdf", 17

    '.SaveAs Filename:=("c:\test\" & "test"), FileFormat:=wdFormatPDF
    .Close
End With
With objWord
    .Quit
End With

好吧,我的問題與語法有關:

這不起作用:

.SaveAs Filename:=(Hoja1.Range("N6").Text & Hoja1.Range("A1") & ".pdf"), FileFormat:=wdFormatPDF

雖然這樣做:

.SaveAs (Hoja1.Range("N6").Text & Hoja1.Range("A1") & ".pdf"), 17

問題是,在改變了這一點之后,

.Close

在下一行中,我要求將更改保存到原始文檔中(以前效果很好)。 它迫使我明確放棄這樣的更改:

.Close _
        SaveChanges:=wdDoNotSaveChanges

最終解決方案是:

With objWord.ActiveDocument
    .SaveAs (Hoja1.Range("N6").Text & Hoja1.Range("A1") & ".pdf"), 17
    .Close _
        SaveChanges:=wdDoNotSaveChanges
End With

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM