May 18 2021 11:06 AM
I have a list of resources and associated info (resource name, group, etc...). Two of these fields are customer resource fields (Text1, Text2). When I am on my Task Sheet I select a resource and the Resource Group field auto-populates. However, I need those other fields from the Resource list in my view as well, and when I try to add them, it only allows me to select Task fields (i.e. not all resource fields are in the list). Is there any way to do this?
May 19 2021 07:58 AM
Is there a way? Yes, but it requires either manual entry or some VBA. Rather than explaining it all here, I suggest you take a look at the following Wiki article:
John
May 19 2021 08:01 AM
@John-project Thank you, I will check out the article. I'm no stranger to VBA and really hoping to avoid manual entry since I have hundreds of these things to maintain.
May 19 2021 08:39 AM
May 19 2021 01:19 PM - edited May 19 2021 06:28 PM
SolutionThe macros in the Wiki article are structured to transfer assignment data to task data or vice versa. It sounds like like what you want to do is to transfer resource data to task data. That is easy enough as long as there is only one assigned resource per task but it presents a dilemma if more than one resource is assigned to a given task, as is often the case.
However, if you do have a single resource assigned to each task, then this code should give you what you want.
Sub ResToTsk()
Dim t As Task
For Each t In ActiveProject.Tasks
If Not t Is Nothing Then
If t.Assignments.Count > 0 Then
t.Text1 = ActiveProject.Resources(t.Assignments(1).ResourceID).Text1
t.Text2 = ActiveProject.Resources(t.Assignments(1).ResourceID).Text2
End If
End If
Next t
End Sub
If you have more than one resource assigned per task, then you need to determine which resource's custom field is transferred to the task custom field.
John
May 20 2021 03:02 AM
@John-project Alas, I am getting an error.
Run-time error '1101':
The argument value is not valid.
When debugging it highlights this line:
t.Text1 = ActiveProject.Resources(t.Assignments(1).ResourceID).Text1
May 20 2021 07:47 AM
May 20 2021 08:02 AM
@John-project It works! Thank you so much, this is going to save me a lot of time and hassle.
May 20 2021 08:03 AM
May 19 2021 01:19 PM - edited May 19 2021 06:28 PM
SolutionThe macros in the Wiki article are structured to transfer assignment data to task data or vice versa. It sounds like like what you want to do is to transfer resource data to task data. That is easy enough as long as there is only one assigned resource per task but it presents a dilemma if more than one resource is assigned to a given task, as is often the case.
However, if you do have a single resource assigned to each task, then this code should give you what you want.
Sub ResToTsk()
Dim t As Task
For Each t In ActiveProject.Tasks
If Not t Is Nothing Then
If t.Assignments.Count > 0 Then
t.Text1 = ActiveProject.Resources(t.Assignments(1).ResourceID).Text1
t.Text2 = ActiveProject.Resources(t.Assignments(1).ResourceID).Text2
End If
End If
Next t
End Sub
If you have more than one resource assigned per task, then you need to determine which resource's custom field is transferred to the task custom field.
John