使用 VBA 将文件添加到 MS-Project 任务注释字段

Posted

技术标签:

【中文标题】使用 VBA 将文件添加到 MS-Project 任务注释字段【英文标题】:Add file to MS-Project task note field with VBA 【发布时间】:2021-12-16 08:10:10 【问题描述】:

我正在尝试通过将信息添加到任务的“注释”字段中来将特定里程碑的详细信息存储在 MS Project 文件中(我正在使用 MS Project Online 桌面客户端)(因为普通的自定义文本字段限制为 255 个字符) ,但在保持格式方面存在问题。 Notes 字段还允许添加任何类型的文件(例如 Word 或 Excel)作为对象,这对我来说可能是一个很好的解决方案,但是当使用 MS Project 宏记录器时,不会记录添加对象的操作。

因此我的问题是:VBA 中是否有可能将文件添加到任务的备注字段并稍后检索它?

任何帮助将不胜感激。

最好, 哈拉尔

【问题讨论】:

【参考方案1】:

我不确定有没有办法在代码中做到这一点。似乎任务对象的Notes property 只接受字符串数据。即使有办法将文件作为注释附加,我也会强烈建议不要这样做,因为它可能会导致您的项目文件损坏。我包含来自this article 的图片:

作为长期使用 MS Project 的人,我亲眼目睹了这种损坏的发生,这确实是您的项目文件可能发生的最糟糕的事情。更好的选择是将这些文件放在共享的网络位置,只需将 path 引用到您想要的文件,您可以通过任务的 Notes 属性在 VBA 代码中执行此操作。

【讨论】:

【参考方案2】:

非常感谢您的快速响应和警告!我做了更多的挖掘,我有理由确定它不能用 VBA 完成。 我现在所做的是将一个类似 html 的字符串放入注释中,其中包含 Excel 中关于我的可交付成果的详细信息的数据。

<DELIVERABLEINFO><OBJECTIVE>The Project Change Management Plan defines and documents the change process for a project.</OBJECTIVE><TOC>to be defined</TOC><INFO>to be defined</INFO></DELIVERABLEINFO>

稍后从 MS-Project 生成 Excel 文件时,我会解析字符串并再次填写特定字段。效果很好,但我发现虽然字符串可以直接从 Excel 单元格内容生成,但当将其从注释放回 Excel 文件时,我需要使用以下函数对其进行处理以再次显示换行符。

Function StringFromNoteToExcel(strNote As Variant) As String
        On Error GoTo StringFromNoteToExcel_Error
        StringFromNoteToExcel = Trim(Replace(strNote, vbCr, vbLf))
        StringFromNoteToExcel = Replace(StringFromNoteToExcel, vbVerticalTab, vbLf)
        StringFromNoteToExcel = Replace(StringFromNoteToExcel, vbTab, vbLf)
          
        On Error GoTo 0
        Exit Function

StringFromNoteToExcel_Error:

        MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure StringFromNoteToExcel, line " & Erl & "."

End Function

它不允许任何花哨的格式,但至少保持结构,你仍然可以在我添加的 HTML 块之外添加注释。

再次感谢! 哈拉尔

【讨论】:

您应该查看在 VBA 中解析 json。 json 可能是使用 xml 执行操作的更简单方法。

以上是关于使用 VBA 将文件添加到 MS-Project 任务注释字段的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 将多个 TXT 导入最后一列时访问添加文件名

如何以编程方式将 .xlam 插件(作为对象)添加到 vba?

添加日期列vba

在excel中使用vba将x天数添加到日期

Excel VBA - 循环未正确添加数据

如何使用 VBA 将事件添加到运行时在 Excel 中创建的控件