如何在vbscript中读取和写入word文件的非标准文档属性?
Microsoft Word提供了一些要在Word文档中设置的默认文档属性。 有许多默认属性,vbscript具有这些属性的常量。 但是Word(2011)提供了更多的属性,例如companyfaxnumber、publishingdate、关键字 可以通过调用来访问内置属性如何在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
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
希望能有所帮助