MS Project 在资源使用视图中导航资源和分配

问题描述 投票:0回答:2

问候。我正在寻找 VBA 中的代码,该代码允许我在 RESOURCE USAGE 视图中使用 FOR NEXT 浏览 ResourceField 中分配的资源,并从 TimescaleRange(带有表格信息的右侧面板)中提取它们的分配信息,为了能够格式化信息并根据决定将其导出。

捕获资源使用视图

我扩展了一些我关心的信息...在捕获中,我呈现了资源使用情况视图,我获取该信息并使用左侧的资源列表,将其复制并粘贴到 Excel 中;有了这些信息,我创建了资源直方图,但我想通过 VBA 宏生成导出过程,因为需要执行几个步骤(过滤、组织视图时间线以及导出开始到结束的信息)。

vba ms-project
2个回答
0
投票

此代码将循环访问活动项目中的资源,并按周按资源获取工作时间。

Sub GetWorkByResourceByAssignment()

    Dim dteStart As Date
    Dim dteEnd As Date

    dteStart = #5/24/2021#
    dteEnd = #8/2/2021#
    
    Dim res As Resource
    Dim a As Assignment
    Dim tsvs As TimeScaleValues
    Dim tsv As TimeScaleValue
    
    For Each res In ActiveProject.Resources
        For Each a In res.Assignments
    
            Set tsvs = a.TimeScaleData(StartDate:=dteStart, _
                                       EndDate:=dteEnd, _
                                       Type:=pjAssignmentTimescaledWork, _
                                       TimeScaleUnit:=pjTimescaleWeeks)
            ReDim workHours(tsvs.Count) As Long
            Dim strValues As String
            strValues = vbNullString
            Dim i As Integer
            i = 0
            For Each tsv In tsvs
                i = i + 1
                workHours(i) = Val(tsv.Value) / 60
                strValues = strValues & ", " & workHours(i)
            Next tsv
            Debug.Print res.Name, a.Task.Name, strValues
        Next
    Next
    
End Sub

变量

strValues
和调试语句用于演示目的。数组
workHours
包含可用于直方图的小时的数字表示形式。


0
投票

代码效果很好,但我有一些不同的问题。在 MS 项目资源使用情况显示中,列出了资源及其下方的分配。我想使用VBA代码来扩展单个资源。我尝试使用

SelectResourceField ROW:=GetItem(titem),列:=“名称”,RowRelative:=False

其中 GetItem 是一个从数组返回资源 ID 的函数。这将打开行而不是资源。如果 SelectResourceField 能够识别 ID: 参数就好了,但事实并非如此。有什么建议吗?

© www.soinside.com 2019 - 2024. All rights reserved.