Publicado em Gerenciamento de Projetos

Exportando dados para Excel com Project VBA

Ambientes organizacionais estão, cada vez mais, exigindo eficiência, eficácia e agilidade na realização de suas tarefas operacionais. Como sabemos, projeto é um conjunto de atividades temporárias, realizado por pessoas com o objetivo de produzir um produto, serviço ou resultado exclusivo. Porém, diariamente, lidamos em projetos com atividades temporárias que podem ser do tipo operacionais e destinadas, por exemplo, a reporte de resultados para a alta administração da organização. Essas tarefas podem ser adicionadas no cronograma do projeto como do tipo recorrente, pois ocorre com uma determinada frequência.

A automatização de tarefas dessa natureza torna-se cada vez mais necessária, em virtude da necessidade de agilizar as entregas. Isso pode ser feito por meio da criação de macros construídas através de linguagens de programação. Um exemplo de linguagem é a Visual Basic, desenvolvida para ser utilizada também conjuntamente com aplicativos do pacote Microsoft Office como Word e Excel, além do Microsoft Project, mais conhecida como Project VBA.

Este artigo tem por objetivo demonstrar um estudo de caso no qual um Gerente de Projeto necessita exportar dados do seu arquivo de projeto (.mpp) para um novo arquivo de planilha do Excel (.xlsx). Essa planilha será posteriormente encaminhada para a alta administração, para que a mesma possa acompanhar o andamento do projeto. Para automatizar essa tarefa devemos seguir os passos apresentados abaixo:

CRIANDO UMA MACRO –  PROJECT VBA

  • Abrir o arquivo do cronograma do projeto. Nesse estudo de caso utilizamos o Cronograma – Projeto Montar um Blog.mpp;
Cronograma - Projeto Montar um Blog
Cronograma – Projeto Montar um Blog
  • Abrir a interface de desenvolvimento do Visual Basic no Project: digitar ALT + F11;
  • Clicar no arquivo ThisProject (Cronograma – Projeto Montar um Blog.mpp) localizado na janela Project Explorer;
Project Explorer
Project Explorer
  • Importar a biblioteca de funções do Excel. Clique em Tools >> References… e selecione a opção “Microsoft Excel 15.0 Object Library”. Em seguida, clique em OK.
  • Digitar as instruções abaixo na janela de código (à direita);
Sub ExportarPlanilha()
    ‘Define as variáveis
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim t As Task
    Dim r As Resource
    Dim nrPlan As Integer
    Dim flName As String
    Dim lin As Integer
    Dim msg As Integer
    Dim col As Integer
    Dim count As Integer
 
    ‘Inicializa as variáveis
    nrPlan = InputBox(“Digite o número da planilha que deseja exportar:” + vbCrLf + vbCrLf + _
    “1 – Gráfico de Gantt” + vbCrLf + _
    “2 – Planilha de Recursos”, “0”)
    flName = InputBox(“Digite o nome do arquivo a ser gravado:”, “EXPORTAR PLANILHA”, “Planilha1”)
    Set xlApp = New Excel.Application
    Workbooks.Add.SaveAs (“C:\TEMP\” + flName + “.xlsx”)
    Set xlBook = xlApp.Workbooks.Open(“C:\TEMP\” + flName + “.xlsx”)
    Set xlSheet = xlBook.Worksheets(1)
    lin = 2
 
    ‘Adiciona as colunas na planilha
    ‘1 – Gráfico de Gantt
    If nrPlan = 1 Then
Cells(1, 1).Value = “ID”
Cells(1, 2).Value = “% Concluída”
Cells(1, 3).Value = “Nome da tarefa”
Cells(1, 4).Value = “Duração”
Cells(1, 5).Value = “Início”
Cells(1, 6).Value = “Fim”
Cells(1, 7).Value = “Predecessoras”
Cells(1, 8).Value = “Nome de Recursos”
          count = 8
    ‘2 – Planilha de Recursos
    ElseIf nrPlan = 2 Then
Cells(1, 1).Value = “ID”
Cells(1, 2).Value = “Nome do recurso”
Cells(1, 3).Value = “Tipo”
Cells(1, 4).Value = “Iniciais”
Cells(1, 5).Value = “Unid. máximas”
Cells(1, 6).Value = “Taxa padrão”
Cells(1, 7).Value = “Taxa h. extra”
Cells(1, 8).Value = “Custo/uso”
Cells(1, 9).Value = “Acumular”
Cells(1, 10).Value = “Calendário”
          count = 10
    End If
 
    ‘Formata o cabeçalho
    For col = 1 To count
Cells(1, col).Font.Size = 12
Cells(1, col).Font.Bold = True
Cells(1, col).Interior.ColorIndex = 50
Cells(1, col).Borders(xlEdgeBottom).LineStyle = xlContinuous
Cells(1, col).Borders(xlEdgeLeft).LineStyle = xlContinuous
Cells(1, col).Borders(xlEdgeRight).LineStyle = xlContinuous
Cells(1, col).Borders(xlEdgeTop).LineStyle = xlContinuous
    Next
    Cells.Columns.AutoFit
 
    ‘Adiciona as linhas na planilha
    ‘1 – Gráfico de Gantt
    If nrPlan = 1 Then
        For Each t In ActiveProject.Tasks
  Cells(lin, 1).Value = t.ID
  Cells(lin, 2).Value = t.PercentComplete
  Cells(lin, 3).Value = t.Name
  Cells(lin, 4).Value = t.Duration
  Cells(lin, 5).Value = t.Start
  Cells(lin, 6).Value = t.Finish
  Cells(lin, 7).Value = t.Predecessors
  Cells(lin, 8).Value = t.ResourceNames
            lin = lin + 1
        Next t
    ‘2 – Planilha de Recursos
    ElseIf nrPlan = 2 Then
        For Each r In ActiveProject.Resources
    Cells(lin, 1).Value = r.ID
    Cells(lin, 2).Value = r.Name
            If (r.Type = 0) Then
Cells(lin, 3).Value = “Trabalho”
            ElseIf (r.Type = 1) Then
Cells(lin, 3).Value = “Material”
            ElseIf (r.Type = 2) Then
Cells(lin, 3).Value = “Custo”
            End If
    Cells(lin, 4).Value = r.Initials
            If (r.MaxUnits <> “”) Then
Cells(lin, 5).Value = CStr(r.MaxUnits * 100) + “%”
            End If
    Cells(lin, 6).Value = r.StandardRate
    Cells(lin, 7).Value = r.OvertimeRate
    Cells(lin, 8).Value = r.CostPerUse
            If (r.AccrueAt = 1) Then
Cells(lin, 9).Value = “Início”
            ElseIf (r.AccrueAt = 2) Then
Cells(lin, 9).Value = “Fim”
            ElseIf (r.AccrueAt = 3) Then
Cells(lin, 9).Value = “Rateado”
            End If
    Cells(lin, 10).Value = r.BaseCalendar
            lin = lin + 1
        Next r
    End If
   
    xlBook.Save
    xlBook.Close
    Workbooks.Close
    msg = MsgBox(“Exportação concluída com sucesso!”, vbOKOnly, “EXPORTAR PLANILHA”)
    xlApp.Visible = True
    xlApp.Workbooks.Open (“C:\TEMP\” + flName + “.xlsx”)
End Sub
  • Digitar Ctrl + S para salvar o projeto.
  • Criar a pasta TEMP no drive C:

EXECUTANDO UMA MACRO

  • Na guia DESENVOLVEDOR, localizada na Faixa de Opções do Microsoft Project, clique no botão “Exibir Macros”. Caso essa guia não esteja disponível, é possível habilitá-la. Para isso assista à vídeo-aula Personalizando a faixa de opções do curso Microsoft Project 2013 desse site e você verá como isso é feito.
  • Selecione a opção “Este Projeto” na combo que lista os locais de macros;
  • Selecione a macro “ExportarPlanilha” na lista exibida e clique em “Executar”.
  • Em seguida defina qual planilha deseja exportar, escolha um nome para o arquivo .xlsx e aguarde o processamento das informações. Ao final será exibida uma mensagem informando a conclusão do processo e posteriormente a planilha com os dados exportados.

Número da Planilha

Nome do arquivo

Exportação concluída

Planilha Exportada
Planilha Exportada
Publicidade

Autor:

Bacharel em Ciência da Computação pela Universidade Federal de Sergipe (UFS) e Pós-Graduado em Gestão de Projetos de Software pela Faculdade de Administração e Negócios de Sergipe (FANESE) e Gestão e Liderança de Pessoas pela Universidade Tiradentes (UNIT). É certificado PMP pelo PMI, ITIL v3 Foundation pelo EXIN e COBIT 5 Foundation pela APMG. Possui experiência de 5 anos nas áreas de Análise e Desenvolvimento de Sistemas do setor público e privado. Atualmente trabalha no Banco do Estado de Sergipe (BANESE), onde já desenvolveu atividades de análise de processos e gerenciamento de projetos no Escritório de Gerenciamento de Demandas, Projetos, pertencentes à Área de Governança de TI. Dentre elas, destacam-se a gestão do projeto de implantação do PMO de TI e suporte no gerenciamento de outros projetos. Atualmente, exerce a função de gerente de projetos no PMO Corporativo do BANESE planejando e executando projetos estratégicos da organização. Ministrou aulas de Sistema de Gerenciamento de Projetos em cursos de MBA da FANESE. É membro do PMI-SE onde já atuou como voluntário em eventos, ministrando curso de Gestão do Tempo em Projetos. É proprietário e articulista do site "Gestão de Projetos Ágeis" www.danielettinger.com, onde divulga trabalhos pessoais na área de Gerenciamento de Projetos e Metodologias Ágeis como artigos, v

14 comentários em “Exportando dados para Excel com Project VBA

  1. Prezados,

    teria como eu exportar para o excel apenas a atividades que devem ser executada no momento? Gerando tipo um lista de atividades diárias?

    Curtir

    1. Prezado Nathan, sim. Porém, depende da sua variável de análise. Por exemplo, caso você deseje exportar atividades com data de início inferior ou igual À data atual, ou seja, que deveriam ter iniciado você deve comparar If t.Start <= Date.Now.

      Curtir

  2. No caso quero exportar atividades inferior ou igual a data atual com %concluída menor que 99%, onde encaixo essa programação no macro?

    Curtir

  3. Bom dia, gostaria de saber se realizando esse procedimento a planilha do excel será atualizada automaticamente a cada modificação que eu faça no Project.
    Eu desenvolvi um estudo de fluxo financeiro no excel com base nas informações do planejamento no project, atualmente eu copio e colo no excel as colunas cada vez que o planejamento sofre alguma alteração, se for possível fazer isso automaticamente eu gostaria.

    Curtir

  4. Prezado Daniel, bom dia! É possível criar este exportador pelo excel? Em resumo, preciso exportar automaticamente (VBA), determinadas atividades do cronograma (mpp) de vários projetos. À medida que eu clique no botão de comando de um projeto, ele faça a leitura dos dados escolhidos deste projeto. Tenho vários cronogramas. Pelo que percebi do código que vc nos indicou, ele só pode ser aplicado no project, em um cronograma específico. Existe algum modo de rodar código VBA para vários cronogramas? Sempre utilizo o VBA para este tipo de necessidade (consolidar dados específicos) no próprio excel ou dados da web, mas nunca precisei para o project e não consigo encontrar solução em minhas buscas. Você consegue me auxiliar? Obrigada.

    Curtir

  5. Boa noite! Está dando erro na linha “Workbooks.Add.SaveAs (“C:\TEMP\” + flName + “.xlsx”)” Erro em tempo de execução ‘1004’: O Microsoft Excel não pode acessar o arquivo

    Curtir

    1. Prezado Manoel, boa tarde! Verifique se você tem permissão de acesso ao diretório “C:\TEMP\” e se ele já está criado. Caso contrário edite o local onde vai salvar o arquivo para um diretório onde seu usuário tenha permissão de escrita. Defina um outro nome para o arquivo. Existem vários artigos na internet que te ajudam a lidar com esse problema do Excel.

      Curtir

  6. Boa tarde,
    Após a exportação, é possível eu atualizar i formações diversas de outras fontes no Excel e depois exportar essas atualizações para o project novamente?
    A partir atualização do excel para é fácil buscando informações de outras fontes, mas a parte de exportar para o project através de macro não é minha praia.
    Acredito que uma outra macro para exportar do Excel para o project seja possível, mas não e contarei nenhuma que eu possa utilizar.

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s