Я уверен, что это работает должным образом в предыдущих версиях Excelне Workbooks.OpenText разбора CSV файлов правильно Excel 2016
Test File:
d/mm/yyyy hh:mm:ss
5/12/1999 6:01:12
30/11/2001 5:00:00
и разделитель между датой и временем является Космический (код ASCII 32)
Если файл сохраняется в виде файла
.txt
, метод OpenText разбирает правильно.Если файл сохраняется в виде файла
.csv
, метод OpenText, кажется, не работает на всехЕсли пробелы заменяются запятыми, и файл сохраняется в виде
.csv
файла, Метод OpenText разделит строки на два столбца, но не будет правильно интерпретировать строку даты.
Мои окна Региональные настройки являются МДГ и моя версия Excel является 2016
Option Explicit
Sub foo()
Dim WB As Workbook
Dim sFN As String
Dim FD As FileDialog
Set FD = Application.FileDialog(msoFileDialogFilePicker)
With FD
.AllowMultiSelect = False
.Filters.Add "Text or CSV", "*.txt, *.csv", 1
.Show
sFN = .SelectedItems(1)
End With
Workbooks.OpenText Filename:=sFN, DataType:=xlDelimited, origin:=437, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, _
FieldInfo:=Array(Array(1, xlDMYFormat), Array(2, xlGeneralFormat))
Set WB = ActiveWorkbook
End Sub
Без знаю, что другие столбцы есть, кажется, что вы могли бы просто прочитать дату и время в качестве одного столбца Date. Похоже, что все равно Excel работает с CSV-файлом. – ThunderFrame
'.Filters.Add« Текст или CSV »,« * .txt, * .csv », 1' Hm, no,' CSV' и 'Text' на самом деле ** не ** одинаковы для' Excel'. Не только то, что настройки разделителя очень специфичны для 'CSV' и ** не устанавливаются ** с использованием параметра в книге Workbooks.OpenText', также обработка Юникода - очень частный случай для' CSV' и отличается от ' Text'. –
@ThunderFrame Это не сработает без изменения региональных настроек Windows. –