O Operação DCMD é uma solução robusta desenvolvida para otimizar a gestão operacional de projetos de construção e manutenção de redes elétricas. Este sistema centraliza o planejamento, execução e acompanhamento de obras, integrando VBA para automação de interface e Power Query (Linguagem M) para uma modelagem de dados avançada. Oferece uma visão 360 graus das operações, permitindo o controle financeiro e a visibilidade em tempo real de metas e indicadores.
- Dashboard Gerencial: Painel intuitivo com indicadores financeiros, metas de desempenho e eficiência operacional por equipe.
- Programação Detalhada: Registro e acompanhamento de todas as atividades programadas, com histórico e projeções futuras.
- Carteira de Obras: Gestão completa do portfólio de obras, incluindo rastreamento financeiro e status de execução.
- Calendário Interativo: Grade mensal para alocação de equipes e visualização do status das atividades.
- Formulários Dinâmicos: Geração de formulários de Ponto de Serviço (PS) diretamente via VBA.
- Gestão de Composição e Medição: Ferramentas para controle de composição de equipes e medição de serviços.
Este projeto aproveita o poder do VBA para criar uma aplicação rica em funcionalidades dentro do ambiente familiar do Excel, complementado por integrações estratégicas:
- Microsoft Excel: Plataforma principal para a interface do usuário e armazenamento de dados.
- VBA (Visual Basic for Applications): Linguagem de programação para automação, lógica de negócios e interação com APIs.
- Power Query (Linguagem M): Motor de ETL (Extract, Transform, Load) utilizado para a modelagem complexa de dados, consolidação de bases e cálculos de indicadores.
- Microsoft Graph API: Utilizada para interagir com serviços da Microsoft 365, como o SharePoint, para leitura e escrita de dados.
- Microsoft SharePoint: Serve como um robusto backend para armazenamento de dados e controle de versão das informações do projeto.
- OAuth 2.0 Device Code Flow: Implementado para um processo de autenticação seguro e eficiente com a Microsoft Graph API, permitindo que o aplicativo obtenha tokens de acesso sem expor credenciais.
- MSXML2.XMLHTTP: Objeto utilizado para realizar requisições HTTP (GET, POST) para as APIs RESTful.
- JsonConverter (VBA-JSON): Biblioteca VBA para serialização e desserialização de objetos JSON, essencial para o tratamento de respostas da API Graph. Biblioteca JSON Converter for VBA, desenvolvido por Tim Hall
- Registro do Windows: Utilizado para persistir de forma segura os tokens de acesso e refresh evitando a necessidade de reautenticação constante.
Um dos grandes diferenciais deste projeto é a utilização da Linguagem M para transformar dados brutos em inteligência de negócio. O processo de ETL realiza:
- Mesclagem de Bases: Consolidação de dados de fontes externas, Carteira de Obras e Programações do SharePoint via
Table.NestedJoin. - Lógica de Status Dinâmica: Atribuição automática do "Status Final" da obra com base em múltiplas variáveis.
- Cálculos Financeiros: Processamento de valores orçados, executados, consolidados e saldos remanescentes em tempo real.
- Classificação Personalizada: Implementação de lógica de ordenação estratégica para priorização de visualização no Dashboard.
Projetado com uma arquitetura que maximiza a funcionalidade do Excel enquanto se integra a serviços corporativos essenciais:
- Frontend (Excel/VBA): A interface do usuário é totalmente construída no Excel, utilizando formulários (UserForms) e controles ActiveX para uma experiência interativa.
- Backend (SharePoint): Listas e bibliotecas do SharePoint são utilizadas para armazenar os dados operacionais, financeiros e de programação, garantindo escalabilidade e acesso colaborativo.
- Camada de Comunicação (Microsoft Graph API): Todas as interações com o SharePoint são realizadas através da Microsoft Graph API, proporcionando uma comunicação padronizada e segura.
- Camada de Dados (Power Query): Responsável por todo o tratamento pesado de dados, garantindo que o VBA foque apenas na interface e automação.
Para garantir a segurança e a conformidade, o projeto implementa o fluxo de autenticação OAuth 2.0 Device Code. Este método é ideal para aplicações que não possuem uma interface de navegador completa, como é o caso de aplicações VBA. O fluxo ocorre da seguinte forma:
- O aplicativo solicita um código de dispositivo e um URI de verificação à Microsoft Identity Platform.
- O usuário é instruído a acessar o URI em um navegador e inserir o código fornecido.
- Após a autenticação bem-sucedida no navegador, o aplicativo recebe um token de acesso e um token de refresh.
- Os tokens são armazenados no Registro do Windows para uso futuro, minimizando interrupções.
- O token de refresh é utilizado para obter novos tokens de acesso quando o token atual expira, garantindo acesso contínuo aos recursos do SharePoint.
O repositório contém os seguintes módulos VBA e arquivos de formulário:
AtualizarConexão.bas: Lógica para atualização de conexões de dados.Calendario.bas: Funções relacionadas ao calendário.GetToken.bas: Implementação do fluxo de autenticação OAuth 2.0 Device Code e gerenciamento de tokens.JsonConverter.bas: Módulo para manipulação de JSON.frmMain.frm,frmMain.frx: Formulário principal da aplicação, responsável pela interface do usuário e orquestração das funcionalidades.frmDeviceCode.frm,frmDeviceCode.frx: Formulário para exibir o código de dispositivo e o URI de verificação durante a autenticação.frmAddCompo.frm,frmAddCompo.frx: Formulário para adicionar composições de equipe.frmAddItem.frm,frmAddItem.frx: Formulário para adicionar itens.frmAddItemCart.frm,frmAddItemCart.frx: Formulário para adicionar itens na carteira de obras.frmAddOse.frm,frmAddOse.frx: Formulário para adicionar códigos de mão de obra.
Desenvolvido por: Pedro Ricardo Moreno
https://www.linkedin.com/in/pedroricardomoreno/
JSON Converter for VBA
VBA-JSON v2.3.1
(c) Tim Hall - https://github.com/VBA-tools/VBA-JSON
@class JsonConverter
@author tim.hall.engr@gmail.com
@license MIT (http://www.opensource.org/licenses/mit-license.php)