繁体   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