Microsoft Word提供了一些要在Word文档中设置的默认文档属性。 有许多默认属性,vbscript具有常量。 但Word(2011)提供了更多属性,例如companyfaxnumber,publishingdate,keywords。
可以通过调用
来访问内置属性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
但我如何找到" custom"的名称?由word提供的属性,但在vbscript中不作为常量出现? 有功能
Document.CustomDocumentProperties
但如果我像上面那样做一个列表,我会得到名为info1,info2等的属性。
答案 0 :(得分:2)
要访问Word CustomDocumentProperties,您需要能够访问OLE文件属性读取器。这扩展到普通/简单文档属性之外,因为它也允许您添加自定义属性。
2005年的脚本文章中有一篇故事,详细介绍了在Word中使用CustomDocumentProperties的安装和使用 - > Here
要下载安装OLE Property Reader DLL,Go - > Here
以下是安装属性读取后属性set / get的示例:
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
享受!
答案 1 :(得分:0)
您最近想出了如何到达那里:
Word"前端编辑"是在欺骗文档属性。有一组硬性定义的属性,如作者,类别,关键字等。 编辑器提供的附加属性是所谓的自定义属性,它们在docx-container内部的外部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
可能有帮助=)