出现在 Word 文件名中的 FORMTEXT 由受保护的表单字段值和 VB 脚本的书签生成



我在保存为受表单域保护的Microsoft Word Macro启用模板的Word 2010文档中使用以下VB脚本:

Sub SaveWithBkMarkedText()
    'This code saves the Word file using the bookmark value for Maintenance Memo.
   'The file is also saved to a folder in KnowHow for files related to this template.
   Dim FileName As String
   FileName = ActiveDocument.Bookmarks("mmn").Range.Text
   'Use the C: code when saving the file locally
   ActiveDocument.SaveAs "C:DownloadTemplatesFolders" & FileName & ".doc"
   MsgBox "Your Draft has been saved to KnowHow's Release Documentation site." & _
      &vbCrLf & "The file name uses the MM that you included earlier: " & FileName, _
       vbInformation + vbOKOnly, "Draft Saved to Minerva"
End Sub

在表单域中输入的 FORMTEXT 旧版表单对象的值使用书签作为文件名。 例如,如果用户输入 12345 作为值,则使用此值作为文件名保存文件:12345.doc。 这一直工作正常,直到一周前文件名现在以 FORMTEXT 12345.doc 为前缀。 我尝试在其他机器上的旧版本的 Word 中使用相同的 VB 脚本,并从新模板创建,并从头开始添加脚本,并且该机器上也出现了相同的问题。 在此之前,我能够毫无问题地更新我的模板,但现在我无法在不影响整个文件的情况下更新这个 FORMTEXT 字段。 我可以更新模板中不使用书签值作为文件名的任何其他 FORMTEXT,并且它可以工作。 此外,我尝试将书签引用更改为另一个 FORMTEXT 对象,并将文件另存为.DOCX无论如何都会发生相同的问题。 是什么原因导致 FORMTEXT 出现在文件名中?

您必须取消保护文档(模板(,然后进行VBA编程。完成后,您可以再次保护它(用于填写表单(,并且在运行宏时不会在文件名中看到"FORMTEXT"。希望对您有所帮助。

对于 OP,您是否解决了这个问题?我现在遇到了同样的问题,我使用带有书签的表单字段文本并使用 VB.net 来获取现在以 FORMTEXT 为前缀的 bookmark.text,只是单独使用书签,它的OK,没有前缀。我将尝试使用代码从结果中删除前 9 个字符,这是一种解决方法,是的,但它可能会起作用。

知道这是一个旧线程,但遇到了同样的问题。作为解决方法...将 FORMTEXT 替换为空 "。在OP情况下:

Dim FileName As String
   FileName = ActiveDocument.Bookmarks("mmn").Range.Text 
   FileName = Replace(FileName, "FORMTEXT ", "") 

不是问题的"修复"或优雅,但它有效。

有同样的问题。只需删除当前书签并添加新书签即可。如果这不起作用,则不要使用以下方法:

FileName = ActiveDocument.Bookmarks("mmn").Range.Text

尝试使用:

Selection.GoTo What:=wdGoToBookmark, Name:="mmn"
Filename = Selection.Text

最新更新