Страницы: 1
RSS
Некорректное отображение формата "дата-время", как задумано форматом., Изменение формата ячеек на формат даты, при копировании из csv в xlsm файл.
 
Добрый день!
Есть два файла - csv и excel. Через макрос, который написан в файле excel, открываю csv-файл и копирую все данные и вставляю в определённый лист в excel.
img1 - на скриншоте открыт файл csv, как выглядит дата в первом столбце.
img2 - как вставляются данные через макрос в файл excel.
img3 - после двойного клика в ячейку(редактирования) ячейка в excel изменяется на корректный вариант.
Подскажите, пожалуйста, есть ли возможность копировать данные сразу в корректной форме?
Изменение формата не помогло, данные остаются такими же, что и на рисунке img2 :
Код
Selection.NumberFormat = "m/d/yyyy h:mm"
При этом выбранный диапазон ячеек изменяется на нужный формат, но данные остаются в такой же форме, что и на img2
Изменено: Abdurashid Umarov - 23.04.2022 17:13:28
 
в формате нет секунд
 
Цитата
Abdurashid Umarov написал:
Через макрос, который написан в файле excel, открываю csv-файл и копирую все данные и вставляю в определённый лист в excel.
Для того, чтобы мы могли ответить на вопрос, необходимо приложить файл Excel, содержащий указанный макрос, и файл csv, содержащий фрагмент исходных данных.
Изменено: sokol92 - 23.04.2022 13:53:36
Владимир
 
Abdurashid Umarov,  у Вас уже 16 сообщений на форуме, а до сих пор не ознакомились с  правилами. Обратите внимание на максимально допустимый размер прикрепляемых файлов.
 
Цитата
написал:
Для того, чтобы мы могли ответить на вопрос, необходимо приложить файл Excel, содержащий указанный макрос, и файл csv, содержащий фрагмент исходных данных.
 
Код копирующий данные из csv файла в Excel:
Код
Sub create()

    Workbooks.OpenText Filename:= _
        "Путь файла", Origin:=65001, StartRow _
        :=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False, _
        Space:=False, Other:=False
        
           
    Range("A2:P2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    
    Workbooks("main.xlsm").Sheets("Лист1").Activate
    ActiveSheet.Range("A2").Select
    ActiveSheet.Paste
    
    Workbooks("example").Activate
    Application.CutCopyMode = False
    
    Workbooks("example").Close

    Workbooks("main.xlsm").Sheets("макросы").Activate


End Sub
 
А где пример .csv файла (хотя бы 10 строк)?
Владимир
 
Цитата
написал:
А где пример .csv файла (хотя бы 10 строк)?
Хотел отправить файл, но не отправляется.
 
Какого размера у Вас фрагмент csv-файла? Что происходит, когда в сообщении Вы нажимаете "Загрузить файлы"?
Не обязательно создавать новые сообщения - Вы можете изменять (редактировать) предыдущие.
Изменено: sokol92 - 23.04.2022 16:04:16
Владимир
 
Цитата
написал:
Не обязательно создавать новые сообщения - Вы можете изменять (редактировать) предыдущие.
Владимир, отправил, изменив начальное обращение, спасибо!
 
Попробуйте параметры для метода OpenText задать так:
Код
Workbooks.OpenText Filename:="C:\Temp\example.csv", _
  DataType:=xlDelimited, Tab:=False, Semicolon:=True, Comma:=False, _
  FieldInfo:=Array(Array(1, xlDMYFormat)), Local:=True
Скорее всего, достаточно и
Код
Workbooks.OpenText Filename:="C:\Temp\example.csv", Local:=True
Изменено: sokol92 - 23.04.2022 17:31:32
Владимир
 
Код
Selection.NumberFormat = "m/d/yyyy h:mm"

вот здесь добавьте секунды
 
В примере проблема не с секундами, а типом ячеек в первом столбце - текст вместо числа (даты). Тип ячейки при изменении формата ячейки не меняется.
Изменено: sokol92 - 23.04.2022 20:14:31
Владимир
 
Цитата
написал:
Попробуйте параметры для метода OpenText задать так:
Владимир, спасибо большое, помогло! НО, есть проблемка ))
теперь во втором столбце "Интервал" отображаются вместо тире, символы  вБ"
пример отображения "00:00вБ"01:00", а должно было быть "00:00-01:00" (
У Вас так не отобразилось?
 
Прошу прощения, вчера недосмотрел (в попытках убрать ненужные параметры).

Два варианта:

Код
Workbooks.OpenText Filename:="C:\Temp\example.csv", origin:=65001, local:=True

или
Код
Workbooks.Open Filename:="C:\Temp\example.csv", Local:=True


В файле не простое тире, а длинное.
Изменено: sokol92 - 24.04.2022 14:02:43
Владимир
 
Цитата
написал:
Два варианта
Добрый день!
Спасибо огромное!!!
Именно первый вариант помог всё наладить! )
Второй вариант кода копировал все данные в первый столбец, думаю из-за разделителя, в csv и excel они отличаются.
Цитата
написал:
В файле не простое тире, а  длинное .
Да, конечно, спасибо!
Страницы: 1
Наверх