Запись числовых значений из ячеек Excel в текстовый файл без научной записи в VBA

у меня возникли некоторые проблемы с модулем VBA в Excel. У меня есть скрипт, который ссылается на ячейки в моей электронной таблице и записывает значения в строки, разделенные запятыми, в текстовый файл.

то, как я это делаю, сводится к:

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

все работает, как ожидалось, но я получаю значения, записанные в мой текстовый файл в научной нотации, если они нули после запятой. Например,

3.77265350125136E-03,0.169769407556311

у меня лист отображается в виде десятичных знаков с шестью цифрами после десятичное число, но это, похоже, не влияет на запись листа.

Я не могу найти никакой информации, говорящей о Excel VBA, преобразующей нотацию значений при записи в текстовый поток. Есть ли способ предотвратить это? В идеале он не будет полагаться на форматирование листа, поэтому я могу отображать меньшую точность для удобочитаемости. Но мне нужно, чтобы значения отображались в моем текстовом файле так:

.00377265350125136,0.169769407556311

заранее спасибо за любую помощь!

6
задан Thomas Kirkpatrick
19.11.2022 8:51 Количество просмотров материала 3119
Распечатать страницу

1 ответ

изменение формата на самом листе Excel ничего не повлияет здесь, потому что вы тянете только данные и помещаете их в переменные.

вы можете заставить значения отображаться без научной нотации, используя строку пользовательского формата, например:

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

вам нужно как минимум столько # Как вы хотите показать характеры для. Такой формат позволит отображать более короткие числа как их фактическую длину, но если вы поставите меньше # чем вы имейте в числе, остальные места будут отрезаны. Если вы хотите заставить все числа одинаковой длины, вы можете использовать 0 на месте # и он будет дополнять более короткие числа нулями. Точно так же, если вы не хотите ведущий 0 перед десятичным разрядом, измените его на #.

0
отвечен techturtle 2022-11-20 16:39

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх