Muitas vezes se torna necessário fazer inserções ou alterações de dados diretamente pela interface do Project já que o PSI (Project Server Interface) não atende 100% das ações realizadas no Project.
Bom, mostrarei aqui como instanciar o Project, criar tarefas, recursos e atribuições.
Lembrando que você deve ter o Project Professional instalado.
Começaremos criando um projeto Windows Forms:
Criei um botão no formulário para podermos fazer os testes com o Project:
Agora você deve adicionar a referência “Microsoft.Office.Interop.MSProject”:
Com isso vamos à ação de click do botão e adicionar o código abaixo:
//Iniciamos o Project Professional
Microsoft.Office.Interop.MSProject.Application app = new
Microsoft.Office.Interop.MSProject.Application();
//Deixamos a aplicação visível
app.Visible = true;
//Abrimos um novo projeto em branco
app.FileNew();
//Buscamos aqui o projeto ativo na
aplicação
Microsoft.Office.Interop.MSProject.Project project = app.ActiveProject;
//Adicionar tarefa
Microsoft.Office.Interop.MSProject.Task task = project.Tasks.Add();task.Name = "Tarefa 01";
//Adicionar recurso
Microsoft.Office.Interop.MSProject.Resource resource = project.Resources.Add();resource.Name = "Recurso 01";
//Adicionar
atribuição
Microsoft.Office.Interop.MSProject.Assignment assignment =
task.Assignments.Add(task.ID, resource.ID);
O código acima está todo comentado podendo ser facilmente entendido mas é importante lembrar que para criar uma atribuição você deve indicar o ID da tarefa e do recurso para que o Project faça esta conexão.
Agora basta você rodar a aplicação e clicar no botão e verá
o Project Professional abrindo, criando uma tarefa, um recurso e faz uma
atribuição.
Olá Matheus,
ResponderExcluirSerá que me pode ajudar em algumas dúvidas? Eu estou desenvolvendo um add-in para o MSProject 2010 em C#, mas estou com bastantes dificuldades.
Por exemplo, eu quero criar tarefas e atribuir-lhes recursos. Isso eu já consegui. O meu objetivo agora é definir a quantidade de recursos (Material) que cada tarefa tem e ser capaz de consultar esse valor.
Agradeço desde já a sua atenção.
Cumprimentos,
André Guedes
Olá André,
ExcluirPara realizar a inserção de unidades, no caso de recursos do tipo material, você deve utilizar a linha abaixo após criar a atribuição, pois a quantidade está relacionada à atribuição e não ao recurso.
assignment.Units = 10;
Para consultar este valor também é simples, basta acessar a atribuição em questão e terá este valor dentro da propriedade Units, como acima.
Matheus Dias
Olá Matheus,
ExcluirObrigado pela resposta.
Entretanto surgiram mais algumas dúvidas. Espero que me possa ajudar.
Uma delas é a seguinte: sabendo que existe apenas um recurso, MSProject.Resources[1], que está atribuido a várias tarefas, por exemplo 5 unidades à tafefa1, 6 à tarefa 2, etc. Como faço para saber quantas unidades desse recurso (material) estão sendo usadas numa determinada data?
Outra dúvida é como eu faço para definir o calendário 24h em código?
Obrigado pela sua atenção. Se não for muita intrusão, gostaria de deixar-lhe o meu email para possa responder diretamente para mim (afm.guedes@gmail.com).
Cumprimentos,
André Guedes
André,
ExcluirPara pegar informações distribuídas no tempo você deverá utilizar função TimeScaleData, onde você poderá não somente buscar esta informação como também atribuir valores à data desejada.
Já para fazer a alteração de calendário utilize ChangeWorkingTimeEx.
Matheus Dias