Win32com连接MSProject:如何通过UniqueID直接引用任务而非重复遍历
解决方案
直接通过UniqueID获取任务对象
MS Project的Tasks集合支持通过UniqueID直接定位任务,无需再次遍历所有任务。使用Tasks.Item()方法,传入存储的UniqueID值即可获取对应任务对象:
# 假设local_temp_list是已存储的UniqueID列表 for unique_id in local_temp_list: # 直接获取任务对象 target_task = MSProject.Tasks.Item(unique_id) # 可直接操作任务,比如查看任务名称 print(target_task.Name)
选中指定UniqueID的任务
要选中对应任务,可使用MS Project应用程序的SelectTask()方法,通过UniqueID参数定位:
# 选中单个任务 MSProject.Application.SelectTask(UniqueID=target_unique_id) # 批量选中多个任务 MSProject.Application.SelectTasks(TaskIDs=local_temp_list)
补充:修正空分派日期的判断逻辑
你原代码中用task['dispatch date'] == 'NULL'的判断方式不准确,在win32com连接MS Project时,空日期字段会返回None,正确的判断逻辑应为:
local_temp_list = [] for task in MSProject.Tasks: # 检查分派日期是否为空 if task.DispatchDate is None: local_temp_list.append(task.UniqueID)
内容的提问来源于stack exchange,提问作者hewi
相关产品推荐
相关产品推荐

