Resultado diferente feito na mão e no vba

Visual Basic for Aplication e macros no Excel.
Regras do fórum
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde. Imagem

Resultado diferente feito na mão e no vba

Mensagempor crazynever » Sáb Ago 12, 2017 8:24 pm

Boa noite galera,

Tenho uma planilha que lê dois csv's e copia para dentro dela e coloca algumas formulas - coisa básica e simples - para depois atualizar algumas planilhas dinamicas, entretanto na ultima semana peguei uma situação interessante.

Se eu abro o csv clicando em cima e usando o excel ele já vem separado em coluna certinho e bonitinho - nada anormal aqui.
Se eu abro o csv via vba ele vem separado em linhas somente e ai necessito separar em colunas.
Código: Selecionar todos
caminhofcr = Application.GetOpenFilename(FileFilter:="CSV,*.csv")
    'Abre o banco FCR
    Workbooks.Open caminhofcr


Gravei algumas macros para ver como o excel converte de texto para coluna e quando eu abro o csv via vba e converto de linhas para colunas na mão o resultado de um campo que contem data continua igual e segue a normalidade, porém se uso esse codigo:
Código: Selecionar todos
    'Seleciona a planilha do relatório FCR
    Sheets(1).Range("A1").Select
    'Seleciona a região toda
    Selection.CurrentRegion.Select
    'Converte as informações em colunas
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:= _
        True


Para realizar a conversão sozinho ele inverte o resultado dos campos que possuem data colocando no padrão americano e como uso essa formula:
Código: Selecionar todos
Worksheets(pastafcr).Range("K2:K" & k).FormulaLocal = "=IF(D2="""";"""";CONCATENATE(DAY(D2);""/"";LOWER(TEXT(D2;""MMMM""))))"

Para transformar a data em legenda para um gráfico ta dando errado, pois o padrao incorreto atrapalha as planilhas dinamicas.

Isso começou faz umas 2 semanas e me afetou em diversas planilhas do excel nas mais variadas formas. Alguns campos de datas que vinham no formato BR mudaram sozinho para EN sem explicação e não consigo retornar ao normal.

Alguem sabe o motivo de que quando faço na mão o resultado é um formato BR e quando uso a macro que gravei o resultado é um formato EN?


Os codigos são bem fraquinhos e precisam melhorar muito - mas esse problema está me deixando de cabelo em pé e não consigo contornar ele sem fazer um serviço muito sujo...

Abraços e boa noite!
crazynever
Membro
Membro
 
Mensagens: 2
Registrado em: Sáb Ago 12, 2017 8:14 pm
Has thanked: 0 time
Have thanks: 0 time

{ SO_SELECT }

Re: Resultado diferente feito na mão e no vba

Mensagempor wagner » Dom Ago 13, 2017 10:47 am

crazynever,

Bom dia!

Assim, sem ver, rodar e depurar seu arquivo fica muito difícil... O Excel, usa os parâmetros de idioma do Windows (geralmente em Português). Já o VBA usa os parâmetros americanos.

Vou apresentar apenas uma sugestão:
Tente criar uma variável do tipo data, armazene nela apenas a data que você está tentando passar na fórmula:
Código: Selecionar todos
Worksheets(pastafcr).Range("K2:K" & k).FormulaLocal = "=IF(D2="""";"""";CONCATENATE(DAY(D2);""/"";LOWER(TEXT(D2;""MMMM""))))" 
e teste com uma msgbox para ver o que o VBA lhe devolve como data. Se ele estiver devolvendo a data no padrão americano, use a função CDate para converter.
Se a resposta foi útil para você, por gentileza, Amigo, clique na mãozinha ao lado direito da ferramenta CITAR, no canto superior direito.

Atenciosamente
Wagner Morel
Avatar do usuário
wagner
Moderador
Moderador
 
Mensagens: 4070
Registrado em: Sáb Out 20, 2012 12:49 pm
Localização: Fortaleza - CE
Has thanked: 68 times
Have thanks: 1768 times

Re: Resultado diferente feito na mão e no vba

Mensagempor crazynever » Qua Ago 23, 2017 9:05 pm

Esperei um tempoa até conseguir estruturar uma resposta e consegui algumas coisas, isto é, essa conversão automática que comentei no final e disse que estava atrapalhando acontece por causa do text to columns que utilizo no vba.

Esse é o código que rodo no VBA
Código: Selecionar todos
wsSLA.Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, DataType:=xlDMYFormat, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
        ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
        (20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), _
        Array(27, 1), Array(28, 1)), TrailingMinusNumbers:=True


Essas são algumas linhas que estão no meu arquivo csv.
Código: Selecionar todos
01000000;"Nome";"Nome";"Status";"16/03/2017 20:21";"16/03/2017 20:21";"Telefone";"Texto";"Texto2";"";"";"";"";"";"";"";"";"";"";"";"";"";"Texto";"Texto2";"";"0";"0";"0"

Código: Selecionar todos
01000000;"Nome";"Nome";"Status;"11/08/2017 12:20";"16/03/2017 20:21";"Telefone";"Texto";"Texto2";"";"";"";"";"";"";"";"";"";"";"";"";"";"Texto";"Texto2";"";"0";"0";"0"


Quando rodo o vba o resultado é diferente, pois na primeira linha ele entende mantém o padrão BR de datas e o valor sai como deveria. Na segunda linha ele converte para o padrão EN de data e altera o valor da variavel numerica e com isso quando jogo funcões como DAY ou MONTH na celula o resultado sai errado.
A segunda linha ele converte as datas para o padrão númeiro fica algo do tipo 43047,51389 já na primeira linha fica exatamente igual 16/03/2017 20:21 e isso está acabando com o restante da planilha.
Colocar no texttocolumns a opção de converter como texto não funciona.


Alguma sugestão?
crazynever
Membro
Membro
 
Mensagens: 2
Registrado em: Sáb Ago 12, 2017 8:14 pm
Has thanked: 0 time
Have thanks: 0 time


Voltar para VBA & Macros

Quem está online

Usuários navegando neste fórum: Google Adsense [Bot], klarc28, teleguiado, vitorhsh, wzxnet7 e 4 visitantes