为什么这个循环不能添加CustomDocumentProperties工作?

时间:2017-09-11 20:01:28

标签: vba loops word-vba

我正在尝试将一些自定义文档属性添加到word文档的文件夹中。

我知道循环本身工作正常,因为我使用不同代码的相同循环来修改然后更新预先存在的自定义文档属性。

添加自定义文档属性的代码也可以使用,我通过在单独的文档中运行它来测试它,它运行正常。

由于循环工作并且循环中的代码也有效,我只是无法弄清楚它有什么问题。

以下是代码:

Sub add_custom_docproperties()

Dim file
Dim path As String

Dim filepath As Variant
filepath = InputBox("Please enter the filepath for the files you want to 
update.", "Input Filepath", "Copy filepath here...")
Select Case StrPtr(response)
Case 0
endednotification = MsgBox("The macro has been ended.", , "Notification")
Exit Sub
Case Else
End Select

path = filepath & "\"

file = Dir(path & "*.*")

'Application.ScreenUpdating = False

Do While file <> ""

    Documents.Open FileName:=path & file

        Check = MsgBox(path & file, , "Check")

        ActiveDocument.CustomDocumentProperties.Add Name:="firstdocprop", 
          _LinkToContent:=False, Type:=msoPropertyTypeString, Value:="The First One"
        ActiveDocument.CustomDocumentProperties.Add Name:="seconddocprop", 
          _LinkToContent:=False, Type:=msoPropertyTypeString, Value:="Second"
        ActiveDocument.CustomDocumentProperties.Add Name:="thirddocprop", 
          _LinkToContent:=False, Type:=msoPropertyTypeString, Value:="Third"

'original example from:
'https://msdn.microsoft.com/en-us/vba/office-shared-vba
/articles/documentproperties-add-method-office

    ActiveDocument.Save
    ActiveDocument.Close

    'set file to next in Dir
    file = Dir()

Loop

'Application.ScreenUpdating = True

MsgBox "The macro is complete."

End Sub

正如你所看到的那样,我在msdn中尝试了第一个例子,我修改了这个例子。

提前感谢您提供任何帮助,即使您可以向我指出一个资源,解释我哪里出错或类似的事情。

1 个答案:

答案 0 :(得分:0)

Word无法识别对CustomDocumentProperties的更改,因为在执行Save命令时实际保存文档非常重要 - 除非您进行了其他更改,否则它只会忽略Save 1}}。

您可以通过告诉Word自上次更改后文档尚未保存来强制进行保存:

ActiveDocument.Saved = False
ActiveDocument.Save
ActiveDocument.Close