2008-10-15 4 views
2

У меня есть приложение VB, которое извлекает данные и создает 3 файла CSV (a.csv, b.csv, c.csv). Затем я использую другую таблицу Excel (import.xls), чтобы импортировать все данные из вышеуказанных CSV-файлов в этот лист.Формат даты CSV

Файл import.xls имеет макрос, который открывает файлы CSV один за другим и копирует данные. Проблема, с которой я сталкиваюсь, - это даты в файлах CSV, которые хранятся как mm/dd/yyyy, и это копируется как на лист Excel. Но мне нужна дата в формате dd/mm/yyy.

Когда я открываю любой файл CSV вручную, даты отображаются в правильном формате (мм/дд/гггг). Любая идея, как я могу решить эту проблему?

ответ

8

Вы можете использовать Формат функции VBA:

Format(DateText, "dd/mm/yyyy") 

Это будет форматировать его, как бы вы хотели.

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

Пуск -> Настройки -> Панель управления -> Региональные параметры.

Убедитесь, что язык установлен на то, что соответствует и что настройки дат являются, как вы хотите, чтобы они были

+0

Число записей велико и есть много листов в import.xls. Любой другой способ сделать это автоматически? – Shoban 2008-10-15 05:52:59

+0

Я только что отредактировал этот пост, взгляните на изменение самих настроек окон – Mark 2008-10-15 06:01:43

14

Когда я сталкиваюсь с этой проблемой, я обычно пишу даты как yyyy-mm-dd, которые Excel будет интерпретировать однозначно.

+1

это самый надежные решения, рекомендованные здесь. Способ взаимодействия Excel и VBA с языковой системой системы довольно непрозрачен, и легко получить странные результаты. Использование этого метода позволяет избежать большого количества кода и, как правило, не представляет проблем для пользователей. – Simon 2009-12-11 17:45:14

1

Прежде всего, других ответов, все хорошо, но Theres еще немного информации вы можете найти полезную

Файл CSV содержит только текст. То есть данные не в формате даты, а в текстовом формате. Поэтому, когда вы открываете CSV-файл в Excel, Excel по умолчанию интерпретирует эти данные для вас. Это не обязательно. Вы можете заставить его оставить его как текст. Или, как упоминалось в Mark, вы можете добавить код в свой макрос импорта, который изменяет его для вас. Если вы хотите автоматизировать процесс, то это лучшее решение. Просто добавьте код в VBA к макросу, который применяет нужный формат даты к столбцу с данными даты. В качестве альтернативы вы можете сделать это вручную после того, как файл будет открыт, и данные будут вставлены путем выбора столбца самостоятельно и изменения формата. Вы можете настроить форматы чисел (выберите «Пользовательский»), а затем записать их самостоятельно. Например, dd/mm/yyyy.

0

У меня была аналогичная проблема, и решить ее, как это, по существу, это «все выше» вариант

  1. С format(date,'dd-mmm-yyyy') преобразовать дату в формате 2-3-4 например01-августу-2008, никак компьютер ошибки 01-Августом для 08-джан :-)
  2. Поскольку копирование этого первенствует автоматически возвращается обратно в формат даты/времени, конвертировать результат в строку с помощью cstr на функцию в 1
  3. Формат ячеек, в которых дата копируется в виде текста (если вы этого не сделаете, thickheaded, как первенствовать, оно будет преобразовать его обратно в дату/время, снова
  4. Сохраните лист как файл csv и откройте в блокноте, чтобы подтвердить его наличие работал

Некоторые люди могут сказать, что это излишество, но лучше быть на безопасной стороне, чем с пользователем позвонить мне через год и говорит мне, что он делает что-то странное с Дейта

Смежные вопросы