Сохранение рабочих листов в CSV с помощью формул Excel

Я работаю полностью на VBA для Excel. Мое решение должно быть полностью программным, а не управляемым пользователем. Требование к решению - пользователь инициирует один макрос, чтобы взять рабочую книгу и сохранить 8 листов в отдельные CSV файлы, сохраняя формулы и отбрасывая разрешения формул. У меня есть массив листов (sht), которые я итерирую и сохраняю. Следующий код делает это идеально.

For i = LBound(sht) To UBound(sht)
    If (SheetExists(csv(i))) Then
        Sheets(sht(i)).SaveAs _
                fullpath & csv(i) & ".csv", _
                FileFormat:=xlCSV, _
                CreateBackup:=False
    End If
Next i

Где fullpath содержит полный путь к месту сохранения файла, и я написал булеву функцию, которая проверяет, существует ли лист в рабочей книге.

Проблема:

Мне нужно, чтобы документы CSV содержали формулы Excel, а не то, что формулы оценивают. Результаты формул можно отбросить. На сайте Microsoft говорится:

Если в ячейках вместо значений формул отображаются формулы, формулы преобразуются в текст. Все форматирование, графика, объекты и другое содержимое рабочего листа теряются. Символ евро будет преобразован в знак вопроса.

Это означает, что функция SaveAs, вероятно, никогда не сделает того, что я хочу, но мне нужен какой-то способ создания файла. В идеале я бы хотел сохранить возможность Excel экранировать ячейки CSV. Файлы CSV будут читаться программами Java и SQL, которые смогут правильно анализировать функции Excel по мере необходимости.

5
задан Community 9 July 2018 в 18:41
поделиться