如何在vbscript中读取和写入word文件的非标准文档属性?

如何在vbscript中读取和写入word文件的非标准文档属性?,vbscript,ms-word,Vbscript,Ms Word,Microsoft Word提供了一些要在Word文档中设置的默认文档属性。 有许多默认属性,vbscript具有这些属性的常量。 但是Word(2011)提供了更多的属性,例如companyfaxnumber、publishingdate、关键字 可以通过调用来访问内置属性 Set oWord = CreateObject("Word.Application") oWord.Visible = True oWord.Documents.Open(strFilePath) For Each pr

Microsoft Word提供了一些要在Word文档中设置的默认文档属性。 有许多默认属性,vbscript具有这些属性的常量。 但是Word(2011)提供了更多的属性,例如companyfaxnumber、publishingdate、关键字

可以通过调用来访问内置属性

Set oWord = CreateObject("Word.Application")
oWord.Visible = True
oWord.Documents.Open(strFilePath)
For Each prop In oWord.ActiveDocument.BuiltInDocumentProperties
    WScript.Echo prop.Name + "::" + oWord.ActiveDocument.BuiltInDocumentProperties(prop.Name).Value
Next
但是,如何找到word提供的“自定义”属性的名称,但这些属性在vbscript中不是常量? 这就是功能

Document.CustomDocumentProperties

但是,如果我像上面那样列出一个列表,我会得到名为info1、info2等的属性。

也可以访问单词CustomDocumentProperties,您需要能够访问OLE文件属性读取器。这超出了普通/简单文档属性的范围,因为它还允许您添加自定义属性

2005年的脚本文章中有一个故事,详细介绍了在Word->

要下载以安装OLE属性读取器DLL,请转到->

以下是安装属性读取后的属性集/获取示例:

Const msoPropertyTypeBoolean = 2

Set objFile = CreateObject("DSOFile.OleDocumentProperties")
objFile.Open("C:\Scripts\New_users.xls")

'Set
'=======================================================================
objFile.CustomProperties.Add "Document Reviewed", msoPropertyTypeBoolean
objFile.Save

'Get
'=======================================================================
Set objProperty = objFile.CustomProperties.Item("Document Reviewed")
wscript.echo objProperty.Value 

享受吧

嗨,最近我自己想出了去那里的办法:

“前端编辑器”这个词在文档属性上作弊。有一组严格定义的属性,如作者、类别、关键字等。 编辑器提供的其他属性称为自定义属性,这些属性在docx容器内的外部XML结构中定义。 因此,没有简单的vbscript函数来修改这些自定义属性的值。 多亏了网络,有人进行了黑客攻击,这就是解决方案:

Sub WriteCustomCoverProperties(ByRef wordInstance, strProp, strText)
    Dim oCustPart 
    Dim oNode 
    Dim strXPath 

    strProp = Replace(strProp, " ", "") 
    Select Case strProp 
        Case "Abstract" strXPath = "/ns0:CoverPageProperties[1]/ns0:Abstract[1]" 
        Case "PublishDate" strXPath = "/ns0:CoverPageProperties[1]/ns0:PublishDate[1]" 
        Case "CompanyAddress" strXPath = "/ns0:CoverPageProperties[1]/ns0:CompanyAddress[1]" 
        Case "CompanyPhone" strXPath = "/ns0:CoverPageProperties[1]/ns0:CompanyPhone[1]" 
        Case "CompanyFax" strXPath = "/ns0:CoverPageProperties[1]/ns0:CompanyFax[1]" 
        Case "CompanyEmail" strXPath = "/ns0:CoverPageProperties[1]/ns0:CompanyEmail[1]" 
        Case Else 
    Exit Sub 

    End Select 
    Set oCustPart = wordInstance.ActiveDocument.CustomXMLParts(3) 
    Set oNode = oCustPart.SelectSingleNode(strXPath) 
    oNode.Text = strText 
    Set oCustPart = Nothing 
    Set oNode = Nothing 
End Sub
希望能有所帮助