Vba 重置表单字段会损坏Word文档
我有一个很大的动态Word宏,上面有很多表单字段。运行需要很长时间,到目前为止,最耗时的部分是在映射表单字段之前清除所有表单字段。现在我正在循环它们,并将它们分别设置为“”。我找到了一个更快的方法,但它总是破坏文档 1) 当前: (三) 在命令按钮中单击事件 1) 每次至少需要一分钟 2) 几乎是即时的,但会损坏文档(错误为“Word遇到问题。您将无法撤消此操作…”) 3) 引发错误-“361:无法加载或卸载此对象” 我要么想工作,要么想找到更快的方法清除表单字段。 感谢您的时间。参考(2):这与其说是一条错误消息,不如说是一条警告,而且没有文档损坏。当文档未受保护时,Word总是会丢失撤消列表,这就是此方法在幕后发生的情况 我想到了两种方法。一种是禁用警报,这将抑制警告。另一种方法是模拟用户取消保护的操作,然后在不保存当前表单字段条目的情况下重新保护 抑制警告(这不会影响真正的错误消息):Vba 重置表单字段会损坏Word文档,vba,ms-word,form-fields,Vba,Ms Word,Form Fields,我有一个很大的动态Word宏,上面有很多表单字段。运行需要很长时间,到目前为止,最耗时的部分是在映射表单字段之前清除所有表单字段。现在我正在循环它们,并将它们分别设置为“”。我找到了一个更快的方法,但它总是破坏文档 1) 当前: (三) 在命令按钮中单击事件 1) 每次至少需要一分钟 2) 几乎是即时的,但会损坏文档(错误为“Word遇到问题。您将无法撤消此操作…”) 3) 引发错误-“361:无法加载或卸载此对象” 我要么想工作,要么想找到更快的方法清除表单字段。 感谢您的时间。参考(2):这
Application.DisplayAlerts = wdAlertsNone
Sub UnprotectReprotectToResetFields()
Dim doc As Word.Document
Set doc = ActiveDocument
If doc.ProtectionType <> wdNoProtection Then
doc.Unprotect
End If
doc.Protect wdAllowOnlyFormFields, False
End Sub
取消保护,然后在不保存用户输入的情况下重新保护文档:
Application.DisplayAlerts = wdAlertsNone
Sub UnprotectReprotectToResetFields()
Dim doc As Word.Document
Set doc = ActiveDocument
If doc.ProtectionType <> wdNoProtection Then
doc.Unprotect
End If
doc.Protect wdAllowOnlyFormFields, False
End Sub
Sub unprotectReprotectResetFields()
Dim doc作为Word.Document
Set doc=ActiveDocument
如果doc.ProtectionType wdNoProtection,则
解除保护
如果结束
文档保护wdAllowOnlyFormFields,False
端接头
Sub UnprotectReprotectToResetFields()
Dim doc As Word.Document
Set doc = ActiveDocument
If doc.ProtectionType <> wdNoProtection Then
doc.Unprotect
End If
doc.Protect wdAllowOnlyFormFields, False
End Sub