Liste des tâches (ressources) - microsoft project 2010

Description

Ce code permet de récupérer en C#, les tâches ainsi que ses ressources d'un projet dans Microsoft Project 2010. Les tâches manuelles n'existe pas 2007.

Source / Exemple :


using MSProject = Microsoft.Office.Interop.MSProject;

 public class Resource
    {
        public String Name { get; set; }
        public Int32 NumberAssignments { get; set; }
        public Boolean IsOverAllocated { get; set; }
    }
 public class Task
    {
        public String Name { get; set; }
        public Boolean IsManuel { get; set; }
        public Boolean IsSummary { get; set; }
        public Boolean IsMilestone { get; set; }
        public Int32 PercentComplete { get; set; }
        public Int16 OutlineLevel { get; set; }
        public Double? Work { get; set; }
        public Double? ActualWork { get; set; }
        public Double? RemainingWork { get; set; }
        public DateTime? StartDate { get; set; }
        public DateTime? FinishDate { get; set; }
        public String BaselineFinish { get; set; }
        public Collection<Resource> Resources { get; set; }
    }

 //MSProject.Project project = Globals.ThisAddIn.Application.ActiveProject;
public static Collection<Task> GetTasks(MSProject.Project project)
        {
            Collection<Task> tasks = null;
            try
            {
                if (project != null)
                {
                    tasks = new Collection<Task>();
                    double hoursPerDay = project.HoursPerDay;

                    foreach (MSProject.Task task in project.Tasks)
                    {
                        if ((task != null))
                        {
                            Task t = new Task();
                            t.Name = task.Name;
                            t.IsManuel = Convert.ToBoolean(task.Manual); //Pas en 2007
                            t.IsSummary = Convert.ToBoolean(task.Summary);
                            t.IsMilestone = Convert.ToBoolean(task.Milestone);
                            t.OutlineLevel = task.OutlineLevel;
                            t.PercentComplete = Convert.ToInt32(task.PercentComplete);
                            t.ActualWork = Convert.ToDouble(task.ActualWork) / hoursPerDay / 60;
                            t.Work = Convert.ToDouble(task.Work) / hoursPerDay / 60;
                            t.RemainingWork = Convert.ToDouble(task.RemainingWork) / hoursPerDay / 60;
                            t.BaselineFinish = task.BaselineFinish.ToString();
                            
                            if ((bool)task.IsStartValid)
                                t.StartDate = SetDate(task.Start.ToString());

                            if ((bool)task.IsFinishValid)
                                t.FinishDate = SetDate(task.Finish.ToString());

                            t.Resources = GetResources(task);
                            tasks.Add(t);
                        }
                    }
                }
            }
            catch
            {
                throw;
            }

            return tasks;
        }

 private Collection<Resource> GetResources(MSProject.Task task)
        {
            Collection<Resource> resources = null;
            try
            {
                if (task != null)
                {
                    resources = new Collection<Resource>();
                    foreach (MSProject.Resource resource in task.Resources)
                    {
                        Resource r = new Resource();
                        r.Name = resource.Name;
                        r.IsOverAllocated = Convert.ToBoolean(resource.Overallocated);
                        r.NumberAssignments = Convert.ToInt32(resource.Assignments.Count);
                        
                        resources.Add(r);
                    }
                }
            }
            catch
            {
                throw;
            }

            return resources;
        }

 private DateTime? SetDate(string dateToSet)
        {
            DateTime temp = new DateTime();
            if (DateTime.TryParse(dateToSet, out temp))
                return temp;
            else
                return null;
        }

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.