Dúvida sobre como executar ou simular macros do Excel

  • Autor Autor colombiano3454
  • Data de início Data de início
Este tópico foi traduzido automaticamente do espanhol. Ver original
colombiano3454

colombiano3454

Zeta
Verificado
Verificación en dos pasos activada
Verificado por Binance
Atualmente, conto com uma automação desenvolvida no Excel através de VBA, cuja programação está completamente terminada e preparada para funcionar. No entanto, seu processamento requer cerca de 15 minutos, já que envolve numerosas operações indispensáveis para obter os resultados esperados. Diante desta situação, considerei distintas opções para otimizar seu desempenho:

1. Rodar a macro do Excel através de uma espécie de máquina virtual que seja executada e o resultado chegue ao meu e-mail.
2. Rodar o código, mas em linguagem Python (a desvantagem é que não atualiza tabelas dinâmicas) e, quando o código Python terminar de rodar, o Excel com o resultado chegue ao meu e-mail.

O problema é que o ideal seria o primeiro caso, mas uma máquina virtual para executar macros é muito cara. Conhecem alguma solução para o meu caso? Ou talvez comentários que possam me ajudar? Ou sugestões?
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Antes de alugar uma VM, eu tentaria medir qual parte da macro consome esses 15 minutos: leitura/escrita célula por célula, recálculo, consultas externas ou atualização de tabelas dinâmicas. Se houver muitos acessos a células, ler e escrever intervalos completos por meio de arrays costuma ajudar. Você também pode desativar temporariamente a atualização de tela, os eventos e o cálculo automático durante o processo, restaurando os valores originais mesmo se ocorrer um erro. Teste sempre em uma cópia e confira se os resultados coincidem.

Se você precisar manter VBA e Excel, outra opção é agendar a execução em um computador Windows que você já tenha ligado, com uma tarefa agendada e um envio posterior do arquivo. Exige Excel instalado e testar a execução na sessão que a tarefa vai usar; a automação não assistida do Office pode apresentar travamentos ou janelas pop-up, então eu não a tomaria como solução de servidor sem testes.

Se decidir migrar para Python, eu separaria primeiro o cálculo da atualização: o Python pode processar dados, mas eu não presumiria que uma biblioteca de arquivos vá recalcular a pasta de trabalho nem atualizar as tabelas dinâmicas como o Excel. Com que frequência você precisa executá-lo, e o gargalo é o VBA ou a atualização de dados?
 
uma máquina virtual para rodar macros é muito cara
colombiano3454, se você já tem a macro pronta e o resultado está correto, eu tentaria preservar esse trabalho. Demorar 15 minutos não significa que você precise de um servidor potente nem que tenha que reescrevê-la inteira em Python. Se você a executasse uma vez por dia, seriam umas 7,5 horas de processamento por mês; a frequência muda bastante a conta.

outra opção é agendar a execução em um computador Windows
A ideia do computador Windows que tuttifrutazo comenta faz sentido para uma primeira etapa. Eu aproveitaria um computador que você já tenha disponível, com Excel e a licença dele, e prepararia uma execução que trabalhe sobre uma cópia da pasta de trabalho. O resultado teria que ser salvo com data e enviado ao terminar. Também colocaria um log e um aviso de falha: uma manhã em que o e-mail não chega precisa poder ser distinguida de o processo ainda estar rodando.

Com as suas tabelas dinâmicas há uma armadilha que convém conhecer antes de pagar outra ferramenta: migrar para Office Scripts com Power Automate também não garante resolver a atualização. A Microsoft documenta que vários métodos de atualização de tabelas dinâmicas não fazem nada quando são chamados a partir de um fluxo, mesmo terminando sem erro. Está nesta documentação. No seu caso, eu testaria essa parte primeiro, antes de migrar o resto.

Mesmo mantendo o Excel, eu não mandaria o e-mail simplesmente depois de chamar o RefreshAll. Algumas consultas são executadas em segundo plano e você pode acabar enviando um arquivo com dados antigos. Eu faria o processo verificar que as consultas e os cálculos terminaram, validar uma data de atualização e um par de totais de controle, e só então salvar e enviar. A Microsoft explica o comportamento do RefreshAll aqui.

Se depois você precisar levar isso para uma máquina remota, eu orçaria Windows, Excel, armazenamento e a forma de execução, além do VPS. Para uma execução sem ninguém na frente, é preciso revisar o licenciamento correspondente e controlar as janelas ou travamentos que o Office possa apresentar; não basta deixar uma tarefa como SYSTEM. O guia da Microsoft para automação autônoma reúne esses pontos.

Eu começaria validando esse percurso completo no computador disponível: entrada, macro, atualização, verificação e e-mail. Assim você saberá quais recursos ele consome de verdade e quanto custa operá-lo, antes de contratar uma máquina ou pagar para refazer algo que já funciona.
 
Voltar
Topo