VBA: из массива в CSV, сохранить длинные числа в виде текста - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь экспортировать массив непосредственно в CSV-файл, используя следующий код: Создать CSV из массива в VBA .

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

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

Я попытался повозиться здесь:

   For n = 1 To UBound(MyArray(), 1)
    sCSV = ""
    For M = 1 To UBound(MyArray(), 2)
      sCSV = sCSV & Format(MyArray(n, M)) & sDelimiter
    Next M
    sCSV = Left(sCSV, Len(sCSV) - 1) 'remove last Delimiter
    Print #7, sCSV
  Next n

1012 * с помощью *

sCSV = sCSV & "'" & Format(MyArray(n, M)) & sDelimiter

и

sCSV = sCSV & cstr(Format(MyArray(n, M))) & sDelimiter

и

sCSV = sCSV & Format(MyArray(n, M), "General") & sDelimiter

но ни у одного из них нет желаемого результата

Все значения в MyArray имеют правильный формат.

Любые предложения

И да, Excel / VBA обычно не является подходящим инструментом для манипулирования большим объемом данных. В этом случае я связан предопределенным рабочим процессом, который иногда ДЕЙСТВУЕТ использование рабочих листов, так что я боюсь, что нет никакого пути к этому ...

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Вам нужна функция форматирования, подобная этой:

Format(MyArray(n, M),"#")

Это заставляет только цифры быть в результирующей строке. Если у вас есть десятичные дроби, то "#. #" Будет учитывать это; однако точка (".") всегда будет присутствовать в выходных данных, даже если десятичных дробей нет.

0 голосов
/ 05 января 2019

Благодаря Freeflow я нашел решение. VBA был слишком силен. Вырежьте формат и используйте

sCSV = sCSV & MyArray(n, M) & sDelimiter

вместо того, чтобы работать. Даже не нуждался в cstr ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...