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: 1
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: 2675
Registrado em: Sáb Out 20, 2012 12:49 pm
Localização: Fortaleza - CE
Has thanked: 34 times
Have thanks: 1195 times


Voltar para VBA & Macros

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 3 visitantes