Página 1 de 1
Virar base de dados de planilha.
Enviado: 15 Mar 2019 às 18:19
por ALANCASTROALVES
Boa Noite!
Gostaria de realizar o fechamento automático de algumas informações conditas em um banco de dados, onde registramos as informações diárias de manutenção de veículo. Gostaria que quando o dia vira-se, se a O.S "Ordem de serviço", não tive-se sido realizada e estivesse ainda com os Status "Manutenção" , ela fosse fechada as 23:59 e reaberta às 00:01 do dia seguinte até a data que ela for encerrada definitivamente.
Re: Virar base de dados de planilha.
Enviado: 16 Mar 2019 às 12:01
por Jimmy
Olá Alan,
Veja se a solução anexa te atende. Criei um novo código na coluna M, onde 0=não aberta, 1=fechada, e (agora o novo) 9=fechada e reaberta.
A macro é executada automaticamente na abertura da planilha, e será executada também automaticamente sempre 1 segundo após a meia-moite.
A macro funciona assim:
* Verifica qual a última linha com preenchimento, baseado no que está digitado na coluna B. Percorre cada uma dessas linhas, e age apenas naquelas em que a data de abertura for inferior à data da execução, E não houver data de fechamento.
* Para essas linhas, a macro copia toda a linha para logo após a última linha preenchida. Na linha original, copia a data de abertura (coluna B) para a data de fechamento (coluna H)m coloca a hora de fechamento às 23:59:59, e muda o código da coluna M para 9, indicando que não se trata de um fechamento normal.
* Para a linha copiada (a de baixo), a data atual é colocada como sendo a data de abertura, e o horário de abertura é 00:00:01.
* No final da execução, uma nova execução automática é agendada para às 00:00:01 do dia seguinte, para o caso de você passar a madrugada trabalhando.
Como você não deu muitos detalhes de como deveria funcionar o fechamento/reabertura, provavelmente algumas coisas não estarão de acordo, mas vamos acertando aos poucos.
Jimmy San Juan
Virar base de dados de planilha.
Enviado: 20 Mar 2019 às 08:59
por ALANCASTROALVES
Bom dia!
Estamos no caminho certo, realizei algumas alterações na planilha de modo com que ela se pareça já com o modelo final. Como entendo muito pouco de vba, poderia me demonstrar por etapas a lógica de funcionamento de cada uma da linhas programadas? E verificar se a planilha continua executar as tarefas pré definidas. Desde já agradeço muito pela ajuda, estou procurando estudar e entender mais sobre esse assunto.
Virar base de dados de planilha.
Enviado: 20 Mar 2019 às 11:06
por ALANCASTROALVES
Também pude notar que a lógica executa o fechamento e abertura no horário pré definido, porém ela não segui uma linha de abertura e fechamento.Vou dar como exemplo o veículo "C46", no dia 02/11/2019 ela fechou no horário pré definido que estipulamos "23:59:59", ela deveria continuar abrindo e fechando essa ordem de serviço caso ela não fosse executada durante os dias recorrentes, 03/11/2019 aberta às "00:00:01" e fechada às "23:59:59" e aberta novamente no dia 04/11/2019 e assim por diante.

Re: Virar base de dados de planilha.
Enviado: 20 Mar 2019 às 17:07
por Jimmy
Olá Alan,
A macro está funcionando na sua nova planilha.
Alterei a macro INICIAR para resolver um problema: caso o usuário clicasse várias vezes no botão "I" (iniciar relógio), haveriam várias rotinas MEURELOGIO executando por segundo. Se você incluir a linha
range("B2").value = range("B2").value + 1
que é um contador, logo como primeira linha da macro MEURELOGIO, você verá isso acontecer. Note que o contador cresce 1 por segundo. Clique no "I" novamente e verá ele crescer 2 por segundo, e a cada clique no I, cresce mais ainda. Resolvido!
Apenas como treino, você poderia unificar as subs INICIAR e PARAR, e colocar um único botão na planilha. Quando clica uma vez, aciona o relógio. Clicando novamente, ele para. (exercício pra fazer em casa

)
Observação: quando a macro roda, a lista de comandos executados é limpa, de forma que você não pode usar o VOLTAR (CTRL-Z). Como sua macro de relógio executa 1 vez por segundo, você perdeu a possibilidade de usar o VOLTAR. Eu acho que o relógio deveria ficar fora do Excel, porque o Windows já tem relogio (canto inferior direito). O que você pode fazer é deixar as macros INICIAR / PARAR, e colocar uma boliha (só um exemplo) que ficaria verde ou vermelha, caso o sistema de fechamento automático estiver ativo ou desativo. Assim, a macro deixaria de rodar a casa segundo, rodando apenas ao clicar no botão. Se o operador quiser saber as horas, ele olha no reloginho do windows.
Pelo que entendi, se uma OS foi aberta e não foi fechada, deve haver uma abertura/fechamento para cada dia do calendário. Correto? Isso pode causar problemas se você digitar um ano errado, por exemplo 2009 ai invés de 2019. A macro incluirá 3650 linhas de abertura e fechamento. Mas se for assim que deve funcionar, faremos.
Jimmy San Juan
Re: Virar base de dados de planilha.
Enviado: 20 Mar 2019 às 17:45
por Jimmy
Esqueci de anexar...
Virar base de dados de planilha.
Enviado: 21 Mar 2019 às 10:55
por ALANCASTROALVES
Então vamos lá!
Está ocorrendo um erro assim que eu abro a planilha dizendo a seguintes frases "O método 'Rows' do objeto '_global' falhou, mandei depurar para localizar a linha com erro, mesmo assim não estou compreendendo o que está acontecendo. Continuando segui sua orientação já que o relógio não ia servi de muita coisa dentro do Excel e ainda iria fazer com que eu perdesse a função de voltar "CTRL+Z". Também realizei uma alteração que impedirá que o operador insira uma data superior ou inferior estipulado por mim, que no caso será entre 01/01/2019 à 31/12/2019, sendo assim eliminando o risco de o operador inserir uma data errada e a macro inseri-se dezenas de linhas erradas automaticamente. Seque Link do anexo pelo google Drive já que passou de 5 mb.
https://drive.google.com/open?id=1x48zY ... qB7exgpcxa
Virar base de dados de planilha.
Enviado: 21 Mar 2019 às 12:39
por Jimmy
Abri a planilha aqui e não erro algum.
Vamos tentar uma coisa. Você tem 68 mil linhas na planilha Celulose. Exclua algumas delas (ou muitas) pra que a planilha baixe de 5Mb e possamos enviar por aqui. Após apagar essas linhas, veja se o erro na abertura continua.
A macro foi feita pra rodar em uma planilha, mas agora me dei conta que há 2 planilhas com o mesmo layout: celulose e madeira.
Pergunta. A macro, quando roda, deve executar em ambas as planilhas ou só em uma?
Jimmy San Juan
Virar base de dados de planilha.
Enviado: 21 Mar 2019 às 12:40
por ALANCASTROALVES
Seque imagens evidenciando os erros que geram quando abro a planilha.

Virar base de dados de planilha.
Enviado: 21 Mar 2019 às 12:56
por ALANCASTROALVES
Pronto exclui algumas linhas para diminuir o tamanho do arquivo.
Em relação a sua pergunta a Macro deverá ser executada nas duas abas "P.A CELULOSE", "P.A MADEIRA". Segue anexo se possível colocar aquele indicador que fique verde ou vermelho caso a macro esteja funcionando direitinho eu ficaria muito feliz. rsrs

Virar base de dados de planilha.
Enviado: 21 Mar 2019 às 13:44
por Jimmy
Alan,
Vou ter que alterar a macro pra rodar nas duas planilhas. Os nomes delas vão ficar presos dentro da macro. Assim, se você alterar um dos nomes, já não vai rodar. Uma forma de contornar isso é você renomear as planilhas colocando um sinal de menos (apenas um exemplo), na frente do nome. Ex: "-P.A CELULOSE". Ai a macro iria, toda vez que executar, verificar na pasta de trabalho todas as planilhas que tem o nome iniciando por "-", e rodar em cima dela. Se quiser trocar o nome da planilha, fica livre, contanto que ela continue a iniciar por "-".
Hoje não conseguirei alterar nada, mas amanhã ok. Enquanto isso pense no que disse acima.
A bolinha verde não era pra indicar se a macro tá rodando ok ou não. Era pra indicar se o seu relógio estava parado ou andando.
A bolinha verde pra indicar macro ok é meio questionável. Imagine que está verde, o operador salva e encerra. Depois abre novamente pra continuar a trabalhar, mas por algum motivo a macro de evento OPEN não roda. A bolinha foi salva verde e continuará verde!
O que pode ser feito é reservar uma área da planilha (Ex. Célula A1) onde conste: "próximo encerramento/abertura de O.S. será feito em 21/03/2019, 23:59:59". O operador olha isso, e se a data for a de ontem, sabe que algo falhou, porque deveria estar lá a data de hoje.
Obrigado pelos "Obrigado"
Jimmy San Juan
Re: Virar base de dados de planilha.
Enviado: 23 Mar 2019 às 11:41
por Jimmy
Oi Alan,
Desculpe a demora.
Alterei a planilha e gostaria que você testasse bastante. Agora ela gera O.S. para cada dia entre a data de abertura e a data do dia da execução, ou seja, se ficar 10 dias sem rodar a macro, quando rodar ela vai gerar uma linha para cada dia que passou.
Isso levanta uma questão: será que a execução automática no início é uma boa idéia? E se o operador ficou doente, ou o PC quebrou, e ficou 5 dias sem lançar os fechamentos? Assim que ele entrar na planilha, várias OSs serão fechadas e reabertas indevidamente. O correto seria esperar ele lançar o que tinha que lançar retroativo ao tempo em que ficou doente, e só depois executar a macro. Se você concorda que isso pode ser um problema, pensamos nas possíveis soluções.
No fechamento e abertura automático eu desconsiderei sábados e domingos, porque achei que futuramente você vai querer contabilizar tempo de reparo, etc, e pode querer não considerar finais de semana. Se quiser que considere os 7 dias da semana, é só apagar a linha da macro onde o comentário diz "Desconsidera sábados e domingos". Apague a linha toda.
Na abertura da planilha as células A1 das planilhas alvo da execução, são apagadas, e durante a execução é colocado um texto informando data e hora da próxima execução.
Dê retorno,
Jimmy San Juan
Re: Virar base de dados de planilha.
Enviado: 27 Mar 2019 às 16:27
por ALANCASTROALVES
Boa tarde!
É praticamente isso!. Realizei algumas alterações adicionando alguns campos onde irei utilizar para fazer os cálculos de DM "disponibilidade mecânica", EO "Eficiência operacional" e DOG "Disponibilidade operacional Global". Muito obrigado pelo seu empenho e apoio para me ajudar a desenvolver esse projeto, essas informações será de muito bom uso. Obrigado!!! qualquer dúvida grito Help!
Virar base de dados de planilha.
Enviado: 27 Mar 2019 às 20:37
por Jimmy
À disposição. Boa sorte!!