Я создал формулу пользователя с подключением ADODB в Excel VBA для чтения полей из файла CSV.Все прекрасно работает, но одно: когда поле имеет десятичные дроби (десятичный символ - «.»), Результатом соединения является целое число без точки.Например, если поле содержит 10,38, результат будет 1038.
Разделителем для файла .csv является «;», и я попробовал подход schema.ini, указав разделитель и типданных для конкретного поля, содержащего десятичные дроби.
Соответствующий код vba:
Dim xlcon As ADODB.Connection
Dim xlrs As ADODB.Recordset
Set xlcon = New ADODB.Connection
Set xlrs = New ADODB.Recordset
xlcon.Provider = "Microsoft.Jet.OLEDB.4.0"
xlcon.ConnectionString = "Data Source=" & currentDataFilePath & ";" & "Extended Properties=""text;HDR=Yes;"""
xlcon.Open
MyQuery = "SELECT " & myep & " AS DATO FROM [" & currentDataFileName & ".csv] WHERE ENT=" & ent & " AND FECHA='" & myfc & "'"
On Error GoTo misErrores
Set xlrs = xlcon.Execute(MyQuery)
resultado = xlrs.Fields(0)
xlrs.Close
Set xlrs = Nothing
xlcon.Close
Set xlcon = Nothing
Ep = resultado
Файл schema.ini:
[2175G.csv]
ColNameHeader = True
Format=Delimited(;)
col4="x1" Double
Файл имеет около 100разные поля, но я думаю, что я должен указать тип только для тех, которые содержат десятичные дроби.В этом случае только поле с именем "x1", расположенное на 4-м месте, содержит десятичные дроби.К сожалению, это не работает.Я делаю что-то неправильно?Спасибо.