【发布时间】:2021-12-22 03:52:36
【问题描述】:
我收到了一份电子表格,其中列出了未来十年每个财政年度的一些资源和资源费率。每年从 5 月 1 日开始。
每个月这些费率都有可能发生变化,例如,可能有人升职,他们的费率也会发生变化。
我正在尝试找出一种方法,可以将资源费率从 Excel 电子表格导入 Microsoft Project 中的资源表,并更新资源费率表 A 以反映每个财政年度的新费率(例如未来十年)。
我知道我需要一个宏来执行此操作,但我不确定从哪里开始。导入映射似乎不起作用。
我的出发点是使用这段代码
Sub SetRateAfromEntField()
'Declare Variables
Dim Res As Resource
'Loop All Resources
For Each Res In ActiveProject.Resources
'Check for Real Resource
If Not (Res Is Nothing) Then
'Set Rate Table A from Std. Rate A
Res.CostRateTables(1).PayRates(Res.CostRateTables(1).PayRates.Count).StandardRate = Res.GetField(FieldNameToFieldConstant("Std. Rate A", pjResource))
End If
Next Res
End Sub
并假设存在已包含费率的资源自定义字段,因此我需要十个自定义字段。
但是,在我的情况下,数据位于 Excel 工作表中。每个资源都有一个唯一的参考代码 (resCode),它存在于 Excel 工作表和每个资源的资源池中。
我正在尝试找出一种方法来直接从电子表格中读取费率并定期更新资源费率。
我看到这段代码看起来很接近,但不包括对存储在 Excel 电子表格中的数据的引用,需要从中读取费率。 https://pm.stackexchange.com/questions/25019/ms-project-multi-year-inflation
总结:
未来 10 年每年的资源费率存储在电子表格中。
资源在 Excel 工作表和项目中都唯一地映射到资源代码 (resCode)。
每月需要通过运行宏导入费率来更新费率。
我们将不胜感激地收到有关如何最好地实现这一目标的任何帮助。
【问题讨论】:
-
一个资源是否有多个 CostRateTables,或者您是否有一个包含多个工资率和适用日期的表?
-
您打算在 Excel 或 MS Project 中编写 vba 代码吗?
标签: excel vba ms-project