ADO усекает данные Excel

У меня есть функция, которая получает набор записей ADODB из содержимого листа с помощью ADO, следующим образом: I '

Function WorksheetRecordset(workbookPath As String, sheetName As String) As adodb.Recordset

Dim objconnection As New adodb.Connection
Dim objrecordset As New adodb.Recordset

On Error GoTo errHandler

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H1

objconnection.CommandTimeout = 99999999

objconnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=" & workbookPath & ";" & _
        "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";"

objrecordset.Open "Select * FROM [" & sheetName & "$]", _
    objconnection, adOpenStatic, adLockOptimistic, adCmdText

If objrecordset.EOF Then
    Set WorksheetRecordset = Nothing
    Exit Function
End If

objrecordset.MoveLast
objrecordset.MoveFirst

Set WorksheetRecordset = objrecordset
Exit Function

errHandler:
Set WorksheetRecordset = Nothing

End Function

У меня возникла проблема с импортированием числовых данных, где числа отформатированы до 1 десятичного знака, но на самом деле они имеют 2 десятичных знака. Это происходит только в том случае, если тип данных смешан в столбце. Например, эти значения:

0.03
0.05
0.08
0.13

Когда я установил их на 1 десятичное место в этой таблице:

+-------+-----------+
| value | something |
+-------+-----------+
| 0.0   | a         |
| 0.1   | a         |
| 0.1   | sda       |
| 0.1   | sdf       |
+-------+-----------+

тогда набор записей получает правильные 2 десятичных разряда. Но когда я положил их в эту таблицу:

+---------+-----------+
|  value  | something |
+---------+-----------+
| asdfasd | asdfas    |
| 0.0     | a         |
| 0.1     | a         |
| 0.1     | sda       |
| 0.1     | sdf       |
+---------+-----------+

тогда набор записей получает только 1 десятичное значение, например это подхватывает0.0" вместо "0,03", Я думаю, что это потому, что строка в первой строке заставляет ADO обрабатывать все значения в столбцах как строки, как показано.

Есть ли способ, которым я все еще могу подобрать текстовую строку, но также получить правильное количество десятичных разрядов в числовых значениях?

РЕДАКТИРОВАТЬ: Просто заметил что-то странное. Когда я запускаю это, когда рабочая книга открыта, набор записей получает правильные десятичные разряды. Если я запускаю его, пока рабочая книга закрыта, он получает только отображаемые десятичные дроби.

Ответы на вопрос(2)

Ваш ответ на вопрос