VBA открывает файл .csv, но меняет форматы

#excel #vba #csv #parsing

#excel #vba #csv #синтаксический анализ

Вопрос:

Есть ли возможность быстрой настройки для решения этой досадной проблемы? Мой код VBA редактирует узел файла .xml в соответствии с содержимым файла .csv. Проблема в том, что когда я использую следующую строку кода, файл .csv разбивается на столбцы, но форматы меняются. set mywbook=Workbooks.Open("myfile.csv") . В частности, числовой текст форматируется как число, а десятичные значения в файле .csv, первоначально отображаемые в виде точек, преобразуются в десятичные с запятыми. Я знаю, что это зависит от локальных настроек Windows по умолчанию. Я пытался исправить эту ошибку, используя что-то вроде .Range("A:A").Text или Cstr(match.Offset(0,3).Value) , но это работает не так, как хотелось бы. Я хотел избежать чего-то вроде Replace(.Cells(28,4).Value, ",",".") : Есть ли что-то вроде Workbooks.Open команды, которая позволяет мне сохранить файл .csv таким, какой он есть, просто анализируется по столбцам?

Комментарии:

1. Повторите «… исправьте эту ошибку …» это не ошибка, так работает Excel. Было бы ошибкой, если бы после сохранения ваших изменений обратно в csv / xml точки были преобразованы в запятые, что сделало бы результирующий файл недействительным. Если бы вы могли предоставить некоторый контекст, почему вам нужно сохранить точное визуальное представление значений, тогда, возможно, мы могли бы предложить несколько идей. Кстати, вы, вероятно, можете изменить настройки Excel по умолчанию в отношении отображения числовых значений независимо от региональных настроек WIndows.

2. У меня была аналогичная проблема, когда моя таблица при сохранении в формате csv удаляла начальные нули из текстовой строки, которая считалась числом. Чтобы исправить это, я начал использовать буквенно-цифровые сериалы вместо просто числовых, теперь он понимает, что не нужно удалять начальные нули. Я бы посоветовал вам поступить аналогичным образом и просто изменить сохраненные значения, чтобы они работали в формате csv.

3. Вы добьетесь большего успеха при импорте csv файлов. Затем, используя устаревший мастер или Power Query, вы можете указать Excel, как анализировать входящие данные. Это будет намного проще, чем пытаться исправить это после того, как Excel самостоятельно решит, как анализировать данные.

4. Хорошо, не могли бы вы дать мне несколько советов? Что я могу сделать вместо Workbooks.Open?