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 }

Share on Facebook Facebook

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 últil para você, por gentileza, Amigo,clique na mãozinha ao lado direito da sua tela. No canto superior.

Atenciosamente
Wagner Morel
Avatar do usuário
wagner
Moderador
Moderador
 
Mensagens: 2879
Registrado em: Sáb Out 20, 2012 12:49 pm
Localização: Fortaleza - CE
Has thanked: 42 times
Have thanks: 1282 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 [Bot] e 8 visitantes