project 2021前置任务延隔时间显示工时怎么办?单位改天教程
在project专业版2021中,前置任务的延隔时间有时会自动显示为“工时”,即便手动输入数字,系统也会将其除以8转换为天,导致排期表视觉上不直观。

这种情况通常是因为项目选项中的默认单位配置或任务导入时的底层标签属性冲突导致的。通过执行VBA脚本一键转换或修改导出文件标签可有效将单位统一恢复为“天”。
一、 使用VBA脚本批量转换单位
对于已经存在大量“工时”单位的项目文件,手动逐条修改并不现实。利用project内置的宏功能可以快速将所有前置任务的延隔单位从小时(pjHours)转换为天。
1、在project中按下 Alt + F11 打开VBA编辑器。
2、点击“插入”>“模块”,将以下代码粘贴进去:

Sub ChangeLagTypeHtoD()
Dim t As Task
Dim dep As TaskDependency
For Each t In ActiveProject.Tasks
If Not t Is Nothing Then
For Each dep In t.TaskDependencies
' 判定如果延隔单位是小时
If dep.LagType = pjHours Then
' 按每日工时折算并重新定义单位为days
dep.Lag = dep.Lag / (60 * ActiveProject.HoursPerDay) & "days"
End If
Next dep
End If
Next t
End Sub
3、按下 F5 运行脚本。运行后,前置任务列中的延隔时间将自动从“工时”变为“天”。

二、XML标签修改法
如果你不习惯使用代码,可以通过文件格式转换来修正底层的格式定义。这个方法适合解决从其他系统导入project后产生的单位锁死问题。
1、导出文件:将当前project文件另存为XML格式。
2、搜索标签:使用记事本或编辑器打开该XML文件,搜索 <LagFormat> 标签。
3、修改数值:将所有 LagFormat 标签的值统一修改为7(在project架构中,7代表“天”单位)。
4、重新导入:保存并用project重新打开此XML文件,你会发现延隔时间已全部恢复为天数显示。
三、 检查项目全局设置
为了防止后续新增任务再次出现工时单位,建议检查项目底层的排程配置。
进入“文件”>“选项”>“日程”,确认“工期显示单位”和“工作时间显示单位”均已设定为“天”。如果此设置被篡改,新输入的前置任务延隔时间可能会默认跟随系统最小粒度单位显示。
延隔时间的计算逻辑深度依赖于“项目信息”中的日历设置。如果你的日历规定每天工作8小时,那么系统在转换“1d”和“8h”时会自动对标。确认脚本中的 ActiveProject.HoursPerDay 与你日历中的设置一致,否则转换后的天数会出现偏差。






