Tópicos relacionados a códigos VBA, gravação de macros, etc.
Avatar do usuário
Por Jimmy 07 Jan 2019 às 18:20
Membro 3 Estrelas
Mensagens: 214
Reputação: 125
#39860
Emitiu com base no bruto CSV?

Depois coloque o código corrigido aqui pois alguém um dia pode ter problema parecido e resolver acompanhar o tópico.

Depois disso, se não houver mais dúvidas, por favor, mande um like, e encerre o tópico.

Caso, mais pra frente, precisar de nova ajuda, abra um novo tópico e colocando o link deste.
Avatar do usuário
Por luizhalmeida 08 Jan 2019 às 10:52
Membro 1 Estrela
Mensagens: 89
Reputação: 8
#39877
Jimmy, bom dia!

Emiti todos os relatórios, criei XLAM com o código correto, adicionei um botão, está funcionando 100%

Posso fazer mais um pedido?

Depois de executada a macro é necessário copiar os dados para a planilha do cliente.

Esses dados estão nas colunas A, B, C e D, a primeira linha é a 4 e a última linha é que possuir algum texto.

Então precisaria que assim que a macro fosse executada, ao seu término, ficasse selecionado (A4:D_). Onde "_" seria a última linha com conteúdo.

Isso existe ou estou viajando? rsrs
Avatar do usuário
Por Jimmy 08 Jan 2019 às 13:50
Membro 3 Estrelas
Mensagens: 214
Reputação: 125
#39883
Oi Luiz,

Não está viajando não. Tudo o que a macro puder fazer por você, deve fazer. É um investimento de tempo que vai se pagando ao longo dos anos de utilização.

Me mande a planilha na sua versão final, porque apaguei a minha. Passe detalhes dizendo colunas A, B, C e D de qual planilha, se é copiar para uma planilha já existente, ou se devo cria uma nova, ou se disse planilha mas na verdade estava querendo dizer Pasta de Trabalho.... etc. Quanto mais detalhes melhor;
Avatar do usuário
Por luizhalmeida 08 Jan 2019 às 15:00
Membro 1 Estrela
Mensagens: 89
Reputação: 8
#39890
Jimmy,

Anexei a planilha, na plan1 está a original, na plan2 está como fica após a macro e já selecionado (pintei de cinza) como sempre faço para "copiar" e colar na pasta do meu cliente (sim, você pegou no ar, eu confundi planilha com pasta rsrs).
Apenas usuários registrados podem ver ou baixar anexos.
Avatar do usuário
Por Jimmy 08 Jan 2019 às 17:05
Membro 3 Estrelas
Mensagens: 214
Reputação: 125
#39898
Luiz,

Coloque as 2 linhas abaixo logo após a última linha da macro, que é a linha Columns("C:D").ColumnWidth = 12

Ate = Cells(Rows.Count, "C").End(xlUp).Row
Range(Cells(4, "A"), Cells(Ate, "D")).Select


Não sei se você pretendia que a seleção fosse feita no final da própria macro geradora do relatório, ou se em macro separada. Se for separada é só colocar as 2 linhas em uma SUB própria.

O único que pude fazer é a seleção. Se tivesse o nome da pasta de trabalho para onde será copiada, poderia fazer a macro também copiar.

Ideia: na macro geradora podemos abrir uma janela, igual às que são abertas quando se está querendo abrir um arquivo, para que seja apontada a planilha do cliente. Haveria uma pasta e nome de arquivo padrão, e caberia ao operador apenas teclar OK, ou escolher outra pasta/arquivo. Se ele teclar OK, a macro recebe o caminho e o nome do arquivo (pasta de trabalho), abre o dito cujo, cria uma planilha nova com um nome pre-definido (apaga se já houver uma com esse nome), salva e fecha (ou deixa aberta). Se o operador teclar CANCELAR, nada disso é feito.
Avatar do usuário
Por luizhalmeida 09 Jan 2019 às 14:01
Membro 1 Estrela
Mensagens: 89
Reputação: 8
#39944
Jimmy,

Agradeço sua disposição em ajudar!

Então... vou te explicar como funciona...

Quando eu exporto o relatório eles saem dessa forma:

Imagem

Cada arquivo é uma planilha de uma filial.

1. Então eu abro um a um
2. Executo a macro em cada uma delas
3. Colo o resultado em uma pasta que eu criei. Todas essas pastas (cada pasta possui uma planilha com uma filial - o numero no final do arquivo identifica qual é a filial) se tornam uma pasta com várias planilhas.

Toda hora o nome dessa pasta muda... Exemplo:
Razão Cliente ABC 11.2018 em 14.12.2018
Razão Cliente ABC 12.2018 em 01.01.2019
Razão Cliente ABC 12.2018 em 08.01.2019
Razão Cliente ABC 12.2018 em 09.01.2019

Eu não sei se consigo rodar esses arquivos em um único arquivo como foi feito nesse tópico: (viewtopic.php?f=12&t=8523) de forma que dê pra identificar quais dados são de qual unidade. Por isso eu os gero em arquivos deparados.

Quem sabe uma maneira boa seja fazer com que o excel pegue esses arquivos da imagem, formate-os e organize todos eles em planilhas separadas de uma pasta... aí eu só renomeio a pasta. O que me diz? Isso é possível?


(por favor me diga se viajei demais e se fui claro rsrs)

Abraços.
Avatar do usuário
Por Jimmy 09 Jan 2019 às 14:33
Membro 3 Estrelas
Mensagens: 214
Reputação: 125
#39945
Proponho irmos fazendo por etapas. Uma vez a etapa concluída, partimos para a seguinte.
A principio vejo 3 etapas:
  • Juntar as informações dos diversos arquivos em uma pasta só, cada arquivo em uma pasta
  • Rodar a macro anteriormente feita para uma pasta, em todas as pastas
  • Voltar as informações para algum outro lugar, que foi sua última demanda (não entendi bem o que é pra fazer, mas discutiremos isso quando chegarmos na terceira etapa

Atapa 1
  • Esses arquivos tem sempre o mesmo nome, variando apenas a numeração final?
  • Como identifico a qual cliente se refere o arquivo?
  • Eles estão todos no mesmo diretório (pasta do Windows) ou em diretórios distintos?
  • Para evitar o trabalho de identificar quais arquivos devem ser lidos, podemos fixar um diretório e a cada execução TODOS os arquivos que têm lá são lidos (podemos adotar critérios como: todos os que iniciam com o texto "Relatório")? Nesse caso seria conveniente apagar ou renomear o arquivo após sua utilização, acrescentando a palavra OLD por exemplo.
  • Qual sera o padrão de nome da planilha na Pasta de Trabalho concentradora?
  • Você pode montar um ambiente de testes, com a pasta padrão, alguns arquivos dentro dela, e um modelo da planilha concentradora?

Pra início tá bom!
Avatar do usuário
Por luizhalmeida 09 Jan 2019 às 19:58
Membro 1 Estrela
Mensagens: 89
Reputação: 8
#39957
Jimmy,
Vamos lá...

- Sim, apenas o número final varia...

- Esses relatórios são todos do mesmo cliente, apenas unidades operacionais diferentes, identificada pelo número. Dá pra ver o nome da empresa logo na primeira linha com conteúdo (célula A4 antes da macro).

- Sim, pode ser aqueles que iniciam com "Relatorios_Gerenciais_Razao_-_Centro_Custo_x_Plano_Contabil_(Grafico)"? Pois aí tem-se certeza que vai ser puxado o relatório certo, e não um outro relatório que inicia com "Relatorios", né? Pode acrescentar OLD, sem problemas, mas temos que lembrar que são arquivos csv e estes possuem limitações de formatação e essas coisas...

- Será Razão (nome da empresa) (competencia -> mês.ano [que fica na coluna A do arquivo]) em (data de hoje)
Exemplo: Razão ABC 01.2018 em 09.01.2019

- Anexei da forma que acho que você pediu. Coloquei na pasta OLD os arquivos extraídos do sistema.
Apenas usuários registrados podem ver ou baixar anexos.
Avatar do usuário
Por Jimmy 11 Jan 2019 às 13:54
Membro 3 Estrelas
Mensagens: 214
Reputação: 125
#40042
Luiz,

Segue RAR com a macro e os arquivos CSV para teste.

Jimmy San Juan
Apenas usuários registrados podem ver ou baixar anexos.
Avatar do usuário
Por Jimmy 11 Jan 2019 às 15:09
Membro 3 Estrelas
Mensagens: 214
Reputação: 125
#40049
Luiz,

Fiz um tópico com dicas (estudo de caso) sobre macros de eventos. Como você está aprendendo, seria interessante olhar.
http://gurudoexcel.com/forum/viewtopic.php?f=27&t=8586&p=40015#p40015

Jimmy San Juan
Avatar do usuário
Por Jimmy 14 Jan 2019 às 19:52
Membro 3 Estrelas
Mensagens: 214
Reputação: 125
#40155
Oi Luiz, conseguiu resolver o problema que estava dando?
Avatar do usuário
Por luizhalmeida 15 Jan 2019 às 09:53
Membro 1 Estrela
Mensagens: 89
Reputação: 8
#40171
Bom dia Jimmy,

Vamos lá...

Fiz os procedimentos aqui e não funcionou corretamente...
Verifiquei que o padrão "Continuação | Centro de custo: ABC" não é bem um "padrão".

Gerei várias vezes os relatórios aqui e o padrão que obtive é Continuação... (coluna B) Centro de Custo: 6 - 1.06 Guarujá (Coluna C) (No caso do arquivo n. 6).

Não sei em quais condições Cont e CC invertem, portando, se for possível, seria interessante incrementar a macro de forma que ele verifique as duas possibilidades...

Estou anexando todos os arquivos novamente.

Sobre o tópico com dicas, darei uma olhada. Obrigado pelo auxílio! :)

Abraços.
Apenas usuários registrados podem ver ou baixar anexos.
Avatar do usuário
Por Jimmy 15 Jan 2019 às 13:32
Membro 3 Estrelas
Mensagens: 214
Reputação: 125
#40185
Luiz, mais uma versão...
Apenas usuários registrados podem ver ou baixar anexos.
Avatar do usuário
Por luizhalmeida 15 Jan 2019 às 15:24
Membro 1 Estrela
Mensagens: 89
Reputação: 8
#40188
Jimmy,

Obtive o seguinte erro:

Imagem
Avatar do usuário
Por luizhalmeida 16 Jan 2019 às 12:04
Membro 1 Estrela
Mensagens: 89
Reputação: 8
#40232
Jimmy,

Notei que quando eu alterava alguns dados pra manter a confidencialidade das informações do cliente e em seguida salvava em CSV, o relatório sofria uma alteração...

Por isso, abri o arquivo, alterei os dados do cliente e salvei em XLSX. Creio que eles estão os mais fiéis possível do original.

Abraços.
Apenas usuários registrados podem ver ou baixar anexos.
Avatar do usuário
Por Jimmy 16 Jan 2019 às 12:43
Membro 3 Estrelas
Mensagens: 214
Reputação: 125
#40238
Pra mim funcionou OK.

Coloque aqui a planilha que contém a macro pois quero comparar minha versão da macro com a sua.
Avatar do usuário
Por Jimmy 16 Jan 2019 às 12:58
Membro 3 Estrelas
Mensagens: 214
Reputação: 125
#40239
luizhalmeida escreveu:Notei que quando eu alterava alguns dados pra manter a confidencialidade das informações do cliente e em seguida salvava em CSV, o relatório sofria uma alteração...


Se preferir não alterar pelo Excel, pode abrir os arquivos CSV pelo bloco de notas ou WordPad. Mande substituir xxx por yyy e salve.
Avatar do usuário
Por luizhalmeida 16 Jan 2019 às 13:40
Membro 1 Estrela
Mensagens: 89
Reputação: 8
#40243
Jimmy escreveu:Pra mim funcionou OK.

Coloque aqui a planilha que contém a macro pois quero comparar minha versão da macro com a sua.


Segue meu anexo. Resolvi o problema que estava faltando.

Por mim já posso marcar como RESOLVIDO. Meu último questionamento é se tem como o excel ordenar as plans dentro da pasta por ordem do número do centro de custo (cada centro de custo tem um numero).

Se não der ou for muito trabalhoso, sem problemas também...
Apenas usuários registrados podem ver ou baixar anexos.
Avatar do usuário
Por Jimmy 16 Jan 2019 às 20:09
Membro 3 Estrelas
Mensagens: 214
Reputação: 125
#40258
Olá Luiz,

Estou mandando nova versão da macro.

Descobri que aquelas linhas em branco no início do CSV atrapalhavam não só a obtenção do Centro de Custo (isso resolvemos pela manha com aquele IF dos parêntesis) mas também na obtenção do nome da empresa, que é esperada na A1 de cada CSV.

Nunca apresentou problema porque acabava prevalecendo o nome da empresa obtido NO ÚLTIMO CSV aberto, que por azar nosso nunca teve linhas em branco no início, impedindo o problema de se manifestar. Mas acabei esbarrando no problema e resolvi.

Alterei o que pediu, classificando as planilhas por ordem numérica. Para isso, acrescentei o número, conforme sugestão tua, antes do CC. Acabei por alterar o caracter inicial de "- " para "#", pois este símbolo significa também "número".

Quando a fechar o tópico, como a macro ficou muito mais complexa do que a maioria das macros aqui do fórum, pode ser que nos próximos dias você se depare ainda com algum problema ainda. Isso é assim mesmo que funciona porque há condições que podem gerar erro e ainda não aconteceram por sorte do destino. Para macros pequenas, testou, funcionou, encerra.
Proponho fechar daqui a uma ou 2 semanas, mas se resolver fechar agora, ok também.

Amanhã viajo ao Paraná, volto na sexta, e durante a viagem não terei acesso ao fórum, mas via whats ok.

Jimmy San Juan
Avatar do usuário
Por Jimmy 16 Jan 2019 às 20:17
Membro 3 Estrelas
Mensagens: 214
Reputação: 125
#40260
Opsss.... esqueci de anexar.
Apenas usuários registrados podem ver ou baixar anexos.