用wdFormatDocument格式保存后关闭文档

时间:2019-05-20 23:09:37

标签: vba ms-word

我有一个较长的代码,最后一部分中有一个ActiveX按钮,用于保存和关闭文件。另外,为了提高效率,我添加了一个vbYesNo命令,用于根据使用的模板创建新文档。

代码:

Sub macrosave ()
Dim doc As Document
Dim strDosar As String
Dim Ret As Variant
Set doc = Application.ActiveDocument
strDosar = Range.Paragraphs(1).Range.Text
Ret = MsgBox("Do you want to create a new document?", vbYesNo)
    If Ret = vbYes Then
    Documents.Add Template:=ActiveDocument.AttachedTemplate.Path & Application.PathSeparator & ActiveDocument.AttachedTemplate.Name
     End If
doc.SaveAs "\\server\Public\" & strDosar & ".doc", FileFormat:=wdFormatDocument = 0
doc.Close
End Sub

如果单击“是”,将创建一个新文档,最后一个文档将保存并随后关闭。
如果单击“否”,将保存活动文档,但此后不会关闭它。

我怀疑它与文件格式(wdFormatDocument)有关,因为这样可以消除所有VBA代码。

文件格式是必需的,因为我想在保存文件后摆脱所有内容控件。
为什么在第二种情况下不执行doc.Close,为达到目的我有什么选择?

2 个答案:

答案 0 :(得分:0)

此参数无效: FileFormat:= wdFormatDocument = 0

也许:

Sub macrosave()
Dim doc As Document, strDosar As String, Ret As Variant
Set doc = ActiveDocument
strDosar = Split(doc.Range.Paragraphs(1).Range.Text, vbCr)(0)
Ret = MsgBox("Do you want to create a new document?", vbYesNo)
If Ret = vbYes Then Documents.Add Template:=doc.AttachedTemplate.FullName
doc.SaveAs "\\server\Public\" & strDosar & ".doc", FileFormat:=wdFormatDocument
doc.Close False
End Sub

答案 1 :(得分:0)

我认为问题出在文件扩展名doc与指定的文件格式wdFormatDocument之间。

从Word 2007开始,默认文件格式(wdFormatDocument)指Word Open XML文件格式docx。要保存为doc文件格式,需要使用wdFormatDocument97。之所以断断续续地工作,是因为该枚举的数值为0

尝试

doc.SaveAs "\\server\Public\" & strDosar & ".doc", FileFormat:=wdFormatDocument97

将扩展名更改为docx

doc.SaveAs "\\server\Public\" & strDosar & ".docx", FileFormat:=wdFormatDocument

但是 docx不会在下次打开文档时删除内容控件。 (doc格式将因为内容控件是与新文件格式同时引入的,因此旧格式不支持它们。)

如果其他目的是“它消除了所有VBA代码”,则在将文档关闭为Normal.dotm之前,请更改附加的模板。这将删除指向附加模板的链接,并具有一个额外的优点,即无论以后谁打开它,文档都将“查找”其模板。 (当不存在附带的模板时,在某些情况下,它可能会使打开时间延迟相当长的时间。)

doc.AttachedTemplate = NormalTemplate

请注意,使用模板的FullName波普尔来拾取文件路径也将变得更加简单:

Documents.Add Template:=ActiveDocument.AttachedTemplate.FullName