Escrevendo valores numéricos de células do Excel para arquivo de texto sem notação científica no VBA

2

Estou tendo problemas com um módulo VBA no Excel. Eu tenho um script que faz referência a células na minha planilha e grava os valores em linhas separadas por vírgulas em um arquivo de texto.

O jeito que eu faço resume-se a:

Dim line_data(0 to 1) As String
line_data(0) = SheetNameVar.Cells(7, "C").Value
line_data(1) = SheetNameVar.Cells(8, "C").Value

Dim line As String
line = Join(line_data, ",")

TextStreamNameVar.WriteLine line

Tudo funciona como esperado, mas continuo recebendo valores escritos em meu arquivo de texto em notação científica se eles tiverem zeros após o decimal. Por exemplo,

3.77265350125136E-03,0.169769407556311

Eu tenho a folha exibida como decimais com seis dígitos após o decimal, mas isso não parece afetar a escrita da folha.

Não consigo encontrar nenhuma informação sobre o Excel VBA convertendo a notação de valor ao gravar em um fluxo de texto. Há uma maneira de prevenir isto? Idealmente, não dependeria da formatação da folha, para que eu possa exibir menos precisão para facilitar a leitura. Mas eu preciso que os valores apareçam assim no meu arquivo de texto:

.00377265350125136,0.169769407556311

Agradecemos antecipadamente por qualquer ajuda!

    
por Thomas Kirkpatrick 15.12.2017 / 14:58

1 resposta

0

Alterar o formato na própria planilha do Excel não afetará nada, porque você está extraindo apenas os dados e colocando-os em variáveis.

Você pode forçar os valores a serem exibidos sem notação científica usando uma string de formato personalizado, como esta:

line_data(0) = Format(Sheets(1).Cells(7, "C").Value, "0.##############################")
line_data(1) = Format(Sheets(1).Cells(8, "C").Value, "0.##############################")

Você precisa de pelo menos o mesmo # para exibir caracteres. Formatado assim, permitirá números mais curtos para exibir como seu comprimento real, mas se você colocar menos # do que você tem no número, os lugares restantes serão cortados. Se você quiser forçar todos os números para o mesmo comprimento, você pode usar 0 no lugar de # e ele irá preencher números mais curtos com zeros. Da mesma forma, se você não quiser um 0 à esquerda antes da casa decimal, altere esse para um # .

    
por 15.12.2017 / 16:21