excel - VBA 设置自定义文档属性

标签 excel vba

我遇到了一些麻烦,我确信可以快速解决。我有一个 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") 它将返回 TrueFalse 值,具体取决于是否找到指定属性.

您可以从子例程中调用它,例如:

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/

相关文章:

excel - 如何在Excel中找到给定数字的最大序列?

vba - 更改 SmartArtNode 的宽度或高度

vba - Worksheet_Activate 代码仅在 1 个工作表中无法运行

excel - 使用 excel 实现 UI 自动化

excel - 当选择改变时如何获取之前的选择?

excel - 删除网站中某个字符串中间和末尾的空格

vba - 取消选中 MSWord 中的 "Formatting"跟踪更改标记选项? (Office 365 for Mac v16.26)

vba - 如何将Excel拆分为多个具有固定行数的工作簿

excel - 在 Tkinter 中打开 excel 文件并绘制图形

excel - For Each - 在没有 for 的情况下编译错误