Minha formatação de data entre italiano para inglês VBA word excel

2

Eu fiz uma macro para extrair uma data de um documento do word e colocar no excel. Eu tenho um controle de conteúdo selecionador de data na palavra. Minha localidade no meu PC está configurada para DD / MM / AAAA no idioma italiano. Meu idioma de palavra do selecionador de data está definido como DD / MM / AAAA em italiano. no meu selecionador de data, vejo a data como, por exemplo, 08/06/2017 Agora eu uso:

Activeworkbook.Sheets("Sheet1").Range("A1") = objwdDoc.ContentControls(12).Range.Text

mas eu tenho 06/08/2017 Eu tentei:

Activeworkbook.Sheets("Sheet1").Range("A1") = format(objwdDoc.ContentControls(12).Range.Text, "DD/MM/YYYY")

Mas eu recebo a data como 06/06/2017

se eu usar:

Activeworkbook.Sheets("Sheet1").Range("A1") = format(objwdDoc.ContentControls(12).Range.Text, "MM/DD/YYYY")

Eu realmente recebo a data certa

Eu verifico o código vba usando uma variável como:

date1 = format(objwdDoc.ContentControls(12).Range.Text, "MM/DD/YYYY")

    Activeworkbook.Sheets("Sheet1").Range("A1") = date1

e na depuração minha variável date1 está correta: 08/06/2017

Quando faço o check-in no excel A1 tho, recebo 06/08/2017 e essa célula é formatada como "data abreviada, dd / MM / AAAA")

por quê?

    
por user2748576 09.06.2017 / 00:05

1 resposta

0

Existem duas maneiras de contornar o problema com datas (o formato de data irlandês é o mesmo que o italiano). Isto é devido ao fato de que o formato americano é MM / DD / AAAA e, por vezes, quando pode ser ou volta ao básico. Para evitar que isso aconteça eu faço o seguinte (onde posso)

  1. Para evitar que a planilha excel corrompa o formato, eu a converto em read para yyyyMMdd e salve como inteiro.
  2. Para impor a aparência correta ao gravar de volta no Excel, uso o formato alemão, que as pessoas podem ler e entender, mas o Excel não reconhece uma configuração não alemã como uma data, ou seja, DD.MM.AAAA

Não é tanto uma solução como uma solução.

    
por 24.09.2018 / 12:34