Безуспешно пытаюсь записать данные в файл Excel:
Файл "Baze.xls" закрыт.
Sub ADO_InsertDataToBaze()
Dim Workbook As Workbook
Dim p As String
Dim i As Long, TabIndex As Long, Ran As Integer
Dim DBFullName As String
Dim Cnct As String, Src As String
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
'Dim j As Long, ar, l As Variant
DBFullName = Path & "Baze.xls;"
Set Connection = New ADODB.Connection
Cnct = "Provider=Microsoft.Jet.OLEDB.4.0;"
Cnct = Cnct & "Data Source=" & DBFullName & _
"Extended Properties=Excel 9.0;Jet OLEDB:Engine Type=35;HDR=no;Jet OLEDB:Compact Without Replica Repair=False;"
Connection.Mode = adModeWrite ' = adModeReadWrite
Connection.Open ConnectionString:=Cnct
Connection.Execute "UPDATE [dannye$] SET f2='5' WHERE f1=" & Count & ""
Connection.Close
Set Connection = Nothing
End Sub
Переменная Count видна на уровне модуля.
После закрытия Connection.Close файл "Baze.xls" увеличивается в размерах приблизительно в 2 раза и при попытке открыть его, появляется предупреждение “File error: data may have been lost”, тем не менее, файл открывается. Данные в нем непонятным образом перемешаны, причем только начиная со строки 2043.
Исходный файл "Baze.xls" имеет 55 столбцов и приблизительно 30000 строк, из которых не все заполнены. Исходный размер файла 1930 кб.
Интересно, что если файл открыт, запись в него проходит без проблем.
И еще одна особенность – если уменьшить количество строк до 2044 (лишние вырезать), запись происходит без проблем и при закрытом файле, причем даже в строку с номером, скажем, 30000.
Может, кто-нибудь знает, как разрешить проблему, чтобы не происходила порча файла и запись происходила без проблем?