Ir ao conteúdo
  • Cadastre-se

Excel Macro pra organizar datas em dd/mm/yyyy


Ir à solução Resolvido por Visitante,

Posts recomendados

Bom dia pessoal!

 

Desenvolvi uma macro, onde eu realizo a cópia de informações de outra planilha compartilhada, porém, algumas informações (marcadas em vermelho no anexo) estão alterando a ordem escrita. A data correta seria: 09/04/2019, porém está vindo escrito com o mês na frente do dia: 04/09/2019.

 

Poderiam me ajudar com alguma macro que fizesse com que a data viesse de maneira correta?

 

Agradeço a atenção e ajuda desde já!

Obrigado!

Capturar.PNG

Link para o comentário
Compartilhar em outros sites

Isso é problema de localização do excel na hora de abrir o arquivo. Se você executar a macro passo a passo (F8) vai perceber que na hora de abrir a planilha fonte as datas estarão trocadas.

Você pode resolver isso facilmente inserindo a opção "local: true" linha de comando onde você abre a planilha. Ficaria algo assim:

Workbooks.Open Filename:="bla bla bla.xls", Local:=True

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Hanner Muito obrigado pela atenção!

 

Inseri no local indicado, porém ao realizar a atualização, as datas continuam vindo fora do formato correto.

 

o Código ficou assim: 

 

Workbooks.Open Filename:="Y:\EF\Publico\PCP\PROGRAMAÇÃO DE FÁBRICA\2019\BLISTAGEM E EMBALAGEM\PROGRAMAÇÃO Blistagem e Embalagem Maio 2019.xlsx", Local:=True, Password:="senha", ReadOnly:=True

 

Não tenho total conhecimento de programação, então não sei dizer se tem algo no meu código que está realizando esta alteração.

 

Pode me ajudar? Agradeço mais uma vez a atenção.

Link para o comentário
Compartilhar em outros sites

@Guilherme Palma Vani  eita, que estranho. Infelizmente não sei resolver de outra forma cara. O mais estranho é que geralmente quando ocorre esse problema, o Excel tenta "inverter" para algumas datas impossíveis. No caso de 21/4 ele converteria pra 4/21 (data inexistente) e a célula ficaria com formato de texto.

 

Não sei se vai ajudar, mas nas linhas de código que uso o recurso do Local:=true nunca usei em conjunto a opção de somente leitura "ReadOnly:=True". Caso não seja um requerimento, tira essa parte do código só pra testar.

Desculpa não poder ajudar mais 😕

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Bom dia,

 

Alguém pode me auxiliar neste problema por favor? Não estou conseguindo resolve-lo e é algo extremamente importante em minha macro.

 

Agradeço a ajuda desde já!

 

Em 13/05/2019 às 10:00, Guilherme Palma Vani disse:

Bom dia pessoal!

 

Desenvolvi uma macro, onde eu realizo a cópia de informações de outra planilha compartilhada, porém, algumas informações (marcadas em vermelho no anexo) estão alterando a ordem escrita. A data correta seria: 09/04/2019, porém está vindo escrito com o mês na frente do dia: 04/09/2019.

 

Poderiam me ajudar com alguma macro que fizesse com que a data viesse de maneira correta?

 

Agradeço a atenção e ajuda desde já!

Obrigado!

Capturar.PNG

 

Link para o comentário
Compartilhar em outros sites

Sugestão - disponibilize uma amostra de cada arquivo Excel (imagens não servem) com algumas linhas com dados na planilha origem que estejam provocando o erro relatado (10 linhas no máximo).

O arquivo destino, que contém a macro, deverá ser compactado antes de anexar aqui no fórum.

Link para o comentário
Compartilhar em outros sites

@osvaldomp  Obrigado pela Sugestão.

 

Segue trecho do código utilizado para realizar a organização por data:

 

'
' Ordenar por Data
'
On Error Resume Next
    If Application.Intersect(Target, Application.Columns(7)) Is Nothing Then Exit Sub
    If Target.Count > 7 Then Exit Sub
    Range("G1").Sort Key1:=Range("G2"), Order1:=xlAscending, Header:=xlYes, _
                                        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom



Outra opção que já tentei, foi com esse código:



Range("A1:Q1000").Select
ActiveWorkbook.Worksheets("Temp_L1").Sort.SortFields.Clear
   ActiveWorkbook.Worksheets("Temp_L1").Sort.SortFields.Add2 Key:=Range( _
        "G1:K1000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Temp_L1").Sort
        .SetRange Range("A1:R1000")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Inclusive, já tentei realizar a alteração para a data americana com este código:

 

'
' Alterando para data Americana

'
Range("G1:K1000").Select
Selection.NumberFormat = "mm/dd/yy"

 

O problema principal está sendo:

Na planilha principal onde retiro as informações, está tudo de acordo. Ao copiar e colar para a minha via VBA, está ocorrendo a alteração da data com o mês. E ao pedir para organizar por data a linha inteira, ele leva em consideração somente o dia, e não a data por completo.

 

Poderiam me auxiliar neste problema?

 

Agradeço desde já a atenção! Qualquer duvida, pode falar.

 

OBRIGADO!

Planilha de Teste.xlsx

Link para o comentário
Compartilhar em outros sites

  • Solução

Operações executadas pelo código abaixo:

1. nas colunas G, H e K transforma os textos do tipo 05/20/2019 07:43 no texto 20/05/2019  07:43

2. nas colunas G, H e K transforma os textos em data & hora reais

3. ordena a tabela A:Q em ordem ascendente com base na coluna G
 

Sub TextosEmDatasOrdenadas()
 Dim c As Range, LR As Long
  Application.ScreenUpdating = False
  LR = Cells(Rows.Count, 7).End(3).Row
  For Each c In Union(Range("G6:H" & LR), Range("K6:K" & LR))
   If Mid(c.Value, 4, 2) > 12 Then
    c.Value = Mid(c.Value, 4, 2) & "/" & Left(c.Value, 2) & "/" _
     & Mid(c.Value, 7, 4) & " " & Format(Right(c.Value, 4), "hh:mm")
   End If
   c.NumberFormat = "dd/mm/yyyy hh:mm"
   c.Value = CDate(c.Value)
  Next c
  Range("A6:Q" & LR).Sort Key1:=[G5], Order1:=xlAscending
  Application.ScreenUpdating = True
End Sub

obs.

1. considerei que ao rodar o código a planilha ativa será Linha 1

2. se você quiser poderá rodar o código acima ao final do código que copia os dados para a planilha Linha 1, basta colocar o nome do primeiro ao final do segundo, conforme abaixo.
 

Sub SuaMacroQueCopiaDados()
'blá...
'blá...
'blá...
TextosEmDatasOrdenadas
End Sub

 

Link para o comentário
Compartilhar em outros sites

@osvaldomp

 

Bom Dia, tudo bem?

 

Testei a macro que me enviou, porém, algumas informações não seguem o que foi informado na macro..

Segue exemplo marcado em AMARELO!

 

Poderia me ajudar a resolver este problema? Muito obrigado!

 

Att; Guilherme

Planilha de Teste.xlsx

Link para o comentário
Compartilhar em outros sites

Situação antes de rodar a macro.

image.png.3fafe43f4d74f781af280ee839feb146.png

 

Situação depois de rodar a macro.

image.png.acf4325e7a97f250aa5de235e45a12c8.png

 

 

10 horas atrás, Guilherme Palma Vani disse:

Testei a macro que me enviou, porém, algumas informações não seguem o que foi informado na macro..

O que exatamente a macro faz que está diferente do que afirmei que ela faz ?

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!