我遇到了一些麻烦,我确信可以快速解决。我有一个 Excel 文档,其中包含“脚本状态”的自定义文档属性字段。脚本状态属性来自下载文档的文档库中的列。我的目标是让用户下载表单,完成分配的任务,然后运行“BeforeSave”宏,该宏将扫描工作并根据宏的结果更新脚本状态属性(即,如果缺少字段,脚本会显示“未完成”等)。在 SharePoint 中,这是一个选择下拉框,其中包含以下选项:未分配、已分配、未完成、已完成/通过、失败、重新测试和推迟。我有检查工作集的逻辑并且工作正常,只是不知道如何更新属性字段。到目前为止我所得到的很简单:
Application.ThisWorkbook.CustomDocumentProperties.Item("Script Status").Value = "Fail"
一旦运行,我就会收到一条错误消息,指出“无效的过程调用或争论”。我尝试研究该行的正确语法,但无济于事。任何帮助将不胜感激!
最佳答案
来自 Sharepoint 的文件可能有一些怪癖,诚然,这不是我熟悉的东西,但通过阅读其他线程,我知道这些文件存在一些困难。这里的情况可能是这样,也可能不是。
无论如何,我们都可以尝试诊断它,也许我们就能解决问题。
正如我在评论中提到的,如果我的工作簿中不存在指定的 DocumentProperty
(“脚本状态”),我可以复制此错误。也许这就像拼写错误一样简单。您可以使用此函数来测试命名的 DocumentProperty
是否存在:
Function CustomPropertyExists(propName As String) As Boolean
Dim wb As Workbook
Dim docProp As DocumentProperty
Dim propExists As Boolean
Set wb = Application.ThisWorkbook
For Each docProp In wb.CustomDocumentProperties
If docProp.Name = propName Then
propExists = True
Exit For
End If
Next
CustomPropertyExists = propExists
End Function
如果将其放入标准模块中,则可以从工作表中调用该函数,如下所示:
=CustomPropertyExists("Script Status")
它将返回 True
或 False
值,具体取决于是否找到指定属性.
您可以从子例程中调用它,例如:
If CustomPropertyExists("Script Status") Then
MsgBox "Exists!",vbInformation
Else
MsgBox "Does not exist", vbCritical
End If
关于excel - VBA 设置自定义文档属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17406585/