Вопрос

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

В файле import.xls есть макрос, который открывает файлы CSV один за другим и копирует данные.Проблема, с которой я столкнулся, заключается в том, что даты в файлах CSV хранятся в формате мм/дд/гггг, и они копируются как есть на лист Excel.Но мне нужна дата в формате дд/мм/гггг.

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

Это было полезно?

Решение

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

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

Это отформатирует его так, как вам нравится.

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

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

Убедитесь, что выбран подходящий язык и что настройки даты такие, как вы хотите.

Другие советы

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

Прежде всего, все остальные ответы хороши, но есть еще кое-что, что может оказаться для вас полезным.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top