Excel vba csv разделитель

Обновлено: 08.07.2024

Как открыть файл CSV с разделительной точкой с запятой с помощью VBA в Excel 2000?

Примеры данных

код

В Excel 2003 11.8231.8221 SP3 с VBA 6.5.1025 я могу открыть файл с разделителями с запятой со следующим кодом VBA:

Однако, когда тот же самый код запускается в Excel 2000 9.0.8961 SP1 с VBA 6.5.1025, я получаю следующую ошибку:

Ошибка компиляции: Именованный аргумент не найден

То есть - я думаю. потому что Excel 2000 не знает именованный аргумент "Local".

Поэтому я удалил часть "Local: = True". Но тогда проблема заключается в том, что целая строка из файла CSV записывается в одну ячейку, а не разбивается на отдельные части с запятой.

Я искал Интернет для решения, но не нашел ничего полезного и кратким.

[Обновление 17.02.2009]

Я попробовал предложение user lc с помощью макрорекордера. Однако результаты были непонятными.

Когда я открываю CSV файл с меню File- > Open. и затем выбираю CSV файл, данные, разделенные точкой с запятой, правильно разбираются. И записанный код так же прост, как:

Но когда я использую этот код VBA в своем макросе, каждая строка снова попадает в одну ячейку.

В соответствии с предложением пользователя barrowc, я также изменил параметры "Региональные и языковые параметры Windows" с "German (Switzerland)" на "English (United) Состояния)". Даже после перезагрузки Excel ничего не изменилось, такая же проблема.

Интересно, почему он работает над системой пользователя Remou. Какие региональные и языковые настройки у вас есть?

[Обновить 22.02.2009]

В то же время я решил проблему, написав функцию импорта самостоятельно, вместо использования Workbooks.OpenText.

Я просто открываю CSV файл в виде текстового файла, читаю строки за строкой, разбивая каждую строку на разделенные точкой с запятой и записываю каждый элемент в ячейку.

Я до сих пор не знаю, почему Workbooks.OpenText не работает в моей системе, даже если он работает в системе пользователя Remou. Я предполагаю, что это может иметь какое-то отношение к языку операционной системы (английский) и региональным и языковым настройкам (немецкий, Швейцария), но я не уверен.

Во всяком случае, обходной путь работает для меня. Благодарим вас за предложения и помощь!

Не уверен, но вы можете попробовать записать макрос, чтобы сделать то же самое, и проверить код VBA, который он создает. Вы можете получить подсказку о том, чего не хватает.

Я нахожу, что это работает для меня в Excel 2000:

Здесь метод OpenText из Excel 2000:

Метод OpenText

Загружает и анализирует текстовый файл как новый книга с одним листом, который содержит проанализированные текстовые файлы.

Синтаксис

expression.OpenText(Имя файла, Происхождение, StartRow, DataType, TextQualifier, Последовательный разделитель, вкладка, точка с запятой, Comma, Space, Other, OtherChar, FieldInfo, DecimalSeparator, ThousandsSeparator)

источник

и здесь версия Excel 2003:

Метод OpenText [Справочник по языку VBA Excel 2003]

Загружает и анализирует текстовый файл как новый книга с одним листом, который содержит проанализированные текстовые файлы.

expression.OpenText(FileName, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Tab, точка с запятой, запятая, космос, другое, OtherChar, FieldInfo, TextVisualLayout, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers, Local)

источник

поэтому Local действительно был новым параметром для Excel 2003 и не будет работать в Excel 2000

Нет идеи относительно причины ошибочного поведения. Параметр Local определяется как:

Локальный Необязательный Вариант. Укажите True, если региональные настройки машины следует использовать для разделители, цифры и данные форматирования.

Возможно, вы захотите дважды проверить региональные настройки на компьютере Excel 2000 и проверить, есть ли что-то, что может привести к неправильной интерпретации данных. Кроме того, попробуйте явно указать параметры DecimalSeparator и ThousandsSeparator в методе Excel 2000 и посмотреть, помогает ли это

ребята, код внизу отлично считывает в Excel csv-файл, когда разделитель полей в этом файле ",".
Но, если вместо этого другой разделитель, типа, ";" , то этот код работает плоховато.
Подскажите, друзья, пожалуйста, как корректно прочитать файл, где разделитель точка с запятой?

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Изменить разделитель в файле CSV
Здравствуйте! Подскажите пожалуйста, как при сохранении файла в формате CSV изменить разделитель.

Беда с кодировкой при чтении csv файла
Привет! При создание csv в OpenOffic, файл сохраняется в UTF-8 и при обработки в php проблем не.

Не выводит русские слова при чтении и лемматизации из csv-файла
Добрый день! К сожалению, я совсем не программист и очень далека от этого, но решение задач.

Как определить разделитель CSV-файла?
Как определить разделитель CSV-файла? Мое VB-приложение создает csv-file, который может быть потом.

Ниже кусок из файла:

2013/12/16;2;88000.00;610.00000;610.00000;610.00000;610.00000;610.00 000;1;40;1.00;1.00000;1.00000;1760000.00;1107.33000;1028.660 00;44000.00000;15.10.2013;16.12.2013;15:14:53;8.09997;586.00 000;1.00000;8.06971;569.00000;1;566.74


конечно можно заменить все символы ";" на "," , но просто файлов 750 штук и они тяжелые..

Добавлено через 1 минуту

А разве ексел не открывает csv без всяких танцев с бубном?

Не всегда - у меня например не открывает как было бы нужно, с корректной разбивкой по полям.
Да и с корректной думаю ни у кого не открывает.

Добавлено через 8 минут
Да и например этот файл - там есть поля
2013/12/16;2;88000.00;610.00000;15.10.2013;586.00 000;1.00000
Вероятно есть какой-то смысл в именно таком формате данных - только вот "586.00 000" непонятная штука.
И что Вы получите после открытия файла? Ну если только посмотреть - то может быть и ничего. А если что-то измените и сохраните - это будет уже совершенно другой файл.

Ну и вариант автора тоже ничего не изменит при записи в ячейку 610.00000 например.
простой пример:

Что бубет в ячейке?
610 если формат был общий.
610.0000 если текстовой
01.09.01 0:00 если дата
и 0:00:00 если время

Как открыть файл CSV с разделительной точкой с запятой с помощью VBA в Excel 2000?

Примеры данных

код

В Excel 2003 11.8231.8221 SP3 с VBA 6.5.1025 я могу открыть файл с разделителями с запятой со следующим кодом VBA:

Однако, когда тот же самый код запускается в Excel 2000 9.0.8961 SP1 с VBA 6.5.1025, я получаю следующую ошибку:

Ошибка компиляции: Именованный аргумент не найден

Я искал Интернет для решения, но не нашел ничего полезного и кратким.

[Обновление 17.02.2009]

Я попробовал предложение user lc с помощью макрорекордера. Однако результаты были непонятными.

Но когда я использую этот код VBA в своем макросе, каждая строка снова попадает в одну ячейку.

Интересно, почему он работает над системой пользователя Remou. Какие региональные и языковые настройки у вас есть?

[Обновить 22.02.2009]

В то же время я решил проблему, написав функцию импорта самостоятельно, вместо использования Workbooks.OpenText.

Я просто открываю CSV файл в виде текстового файла, читаю строки за строкой, разбивая каждую строку на разделенные точкой с запятой и записываю каждый элемент в ячейку.

Я до сих пор не знаю, почему Workbooks.OpenText не работает в моей системе, даже если он работает в системе пользователя Remou. Я предполагаю, что это может иметь какое-то отношение к языку операционной системы (английский) и региональным и языковым настройкам (немецкий, Швейцария), но я не уверен.

Во всяком случае, обходной путь работает для меня. Благодарим вас за предложения и помощь!

Не уверен, но вы можете попробовать записать макрос, чтобы сделать то же самое, и проверить код VBA, который он создает. Вы можете получить подсказку о том, чего не хватает.

Я нахожу, что это работает для меня в Excel 2000:

Здесь метод OpenText из Excel 2000:

Метод OpenText

Загружает и анализирует текстовый файл как новый книга с одним листом, который содержит проанализированные текстовые файлы.

Синтаксис

expression.OpenText(Имя файла, Происхождение, StartRow, DataType, TextQualifier, Последовательный разделитель, вкладка, точка с запятой, Comma, Space, Other, OtherChar, FieldInfo, DecimalSeparator, ThousandsSeparator)

источник

и здесь версия Excel 2003:

Метод OpenText [Справочник по языку VBA Excel 2003]

Загружает и анализирует текстовый файл как новый книга с одним листом, который содержит проанализированные текстовые файлы.

expression.OpenText(FileName, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Tab, точка с запятой, запятая, космос, другое, OtherChar, FieldInfo, TextVisualLayout, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers, Local)

источник

поэтому Local действительно был новым параметром для Excel 2003 и не будет работать в Excel 2000

Нет идеи относительно причины ошибочного поведения. Параметр Local определяется как:

Локальный Необязательный Вариант. Укажите True, если региональные настройки машины следует использовать для разделители, цифры и данные форматирования.

Возможно, вы захотите дважды проверить региональные настройки на компьютере Excel 2000 и проверить, есть ли что-то, что может привести к неправильной интерпретации данных. Кроме того, попробуйте явно указать параметры DecimalSeparator и ThousandsSeparator в методе Excel 2000 и посмотреть, помогает ли это

Разделитель при чтении csv-файла
всем привет, ребята, код внизу отлично считывает в Excel csv-файл, когда разделитель полей в.

Как определить разделитель CSV-файла?
Как определить разделитель CSV-файла? Мое VB-приложение создает csv-file, который может быть потом.


Изменить символ разделитель ifstream
Доброго времени суток! Решил создать некую программу и наткнулся на одну проблему. Функция.

Изменить разделитель целой и дробной части
в программе необходимо проверить, какой разделитель используется в системе и, есле это не точка, то.

По-моему, в списке параметров соответствующей ВБА-команды есть 'делимитер'. Т.е. при сохранении через стандартное меню 'Файл/Сохранить как. ' ты разделитель не поменяешь, а вот если напишешь 'альтернативный' ВБА-код и выведешь на меню/кнопку (вместо 'Файл/Сохранить как. ') - то там будет использоваться заданный тобой разделитель. В SaveAs нету параметра - делимитер! Он по умолчанию берется из региональных настроек виндов. Там я и поменял разделитель на тот,который мне был нужен.
Можно задавать делимитер при открытиии файла формата отличного от xls
вот вырезка из справки


Изменить разделитель массива после определенного элемента
Всем привет. Подскажите, пожалуйста, как изменить разделитель массива, только после определенного.

Программно изменить разделитель целой и дробной части
необходимо в самой программе проверить, что используется в качестве разделителя дробной и целой.

Найти в *.txt файле строку черз разделитель
Есть программа в которой храниться переменная AnsiString нужно найти в определённом *.txt файле эту.

Необходимо для ОДНОЙ программы изменить десятичный разделитель с запятой на точку
Необходимо для одной программы изменить десятичный разделитель с запятой на точку не трогая.

Как сменить системные параметры: десятичный разделитель и разделитель в дате?
Как сменить системные параметры: 'десятичный разделитель' и 'разделитель в дате'? Подозреваю.

Кавычки в csv-файле
Здравствуйте, Был файл в формате xlsx. Я его пересохранила в csv, т к файлы в формате csv.

Читайте также: