如何根据文档中的值更新SharePoint内容类型属性?

时间:2014-08-22 07:14:39

标签: excel-vba sharepoint sharepoint-2010 excel-2010 vba

我使用Excel模板作为Sharepoint文档集中的自定义文档类型。 我有一些这种文档类型的自定义元数据,例如一个名为Priority的列表(低,中,高)。

我可以使用ActiveWorkbook.ContentTypeProperties(Property)从文档中读取元数据。

有没有办法从文档中更改值? 我想从文档内容中获取元数据值。

1 个答案:

答案 0 :(得分:3)

如您所述,通过ContentTypeProperties引用服务器元数据。为了让他们从doc内容中获取,我曾经创建了一个工作表函数来执行此操作,告诉您想要的元数据名称和您希望更改的值,这里是我的代码和注释 -

Public Function zSETSERVERMETADATA(ByVal metaTypeName As String, Optional ByVal newValue As String = "") As String
'Recalculate upon every time any cell changes
Application.Volatile
'Set wb pointer trough caller parents
Dim wb As Workbook, r As Range, ws As Worksheet
Set r = Application.Caller
Set ws = r.Parent
Set wb = ws.Parent

'Clear unused elements
Set r = Nothing
Set ws = Nothing
On Error GoTo NoSuchProperty

'If value defined on newValue, set the value and showoutput
If newValue <> "" Then
    wb.ContentTypeProperties(metaTypeName).Value = newValue
    zSETSERVERMETADATA = wb.ContentTypeProperties(metaTypeName).Value
    Set wb = Nothing
    Exit Function
'If no value defined on newValue only show output but leave content type unchanged
Else
    zSETSERVERMETADATA = wb.ContentTypeProperties(metaTypeName).Value
    Set wb = Nothing
    Exit Function
End If

NoSuchProperty:
    zSETSERVERMETADATA = CVErr(xlErrValue)
    Set wb = Nothing
End Function

您可以像任何工作表函数一样使用它,例如,如果您想要更改名为&#34; Author&#34;重视&#34; SickDimension&#34;你用公式 -

在单元格中调用函数
=zSETSERVERMETADATA("Author";"SickDimension")

顺便说一下,使用我的函数,将第二个参数留空只会返回该字段的值。