使用单词SaveAs FileFormat:= wdFormatPDF的VBA宏创建.docx

时间:2018-06-15 19:53:55

标签: excel-vba pdf ms-word vba excel

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文件。

3 个答案:

答案 0 :(得分:2)

你得到的东西取决于你传递的东西" aName"。例如,如果它包含.docx扩展名,则您的PDF将具有无效的.docx扩展名。

您是否为此使用SaveAs或SaveAs2没有任何区别。

答案 1 :(得分:1)

你需要像这样使用SaveAs2方法(测试它是否有效):

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

答案 2 :(得分:0)

好吧,我的问题与语法有关:

这不起作用:

.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