Тема: VBA: INSERT в xls через ADO
Доброго дня.
Имеется xls файл с одним листом, 10 колонок - создан через ADOX. Необходимо добавлять в него данные.
Из vbs всё отлично работает(в том числе и вариант с получением ссылки на ActiveConnection из ADOX после создания файла). Вот "скелет":
Option Explicit
' константы для работы с ADO
Const adUseClient = 3 : Const adSchemaTables = 20 : Const adSchemaColumns = 4
' Типы данных ADOX, доступные для Excel:
Const adDouble = 5, adDate = 7, adCurrency = 6, adBoolean = 11, adVarWChar = 202, adLongVarWChar = 203
Dim oConn
Set oConn = CreateObject("ADODB.Connection")
With oConn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0;"
.CursorLocation = adUseClient
.Open "C:\Temp\222.xls"
End With
Dim i
For i = 1 To 10
oConn.Execute "INSERT INTO Report VALUES ('PLEE022022', '13.01.2011', 'LLP LOGISTS', 'NORD WACE NUFF', '1003776', '13.01.2011', '12204.35', '1042.15', '780', '1008')"
Next
Set oConn = Nothing
Но vbs это так, для тестов и отладок. А работать это должно из ADP-шного проекта(MS Access 2003). Вот код процедуры:
Sub main()
Dim oConn
Set oConn = CreateObject("ADODB.Connection")
With oConn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").value = "Excel 8.0;"
.CursorLocation = adUseClient
.Open "C:\Temp\222.xls"
End With
Dim i
For i = 1 To 10
oConn.Execute "INSERT INTO Report VALUES ('PLEE022022', '13.01.2011', 'LLP LOGISTS', 'NORD WACE NUFF', '1003776', '13.01.2011', '12204.35', '1042.15', '780', '1008')"
Next
Set oConn = Nothing
End Sub
При попытке выполнить запрос(oConn.Execute) получаю ошибку: "В операции должен использоваться обновляемый запрос."(если кому-то поможет с диагонозом, то на момент ошибки св-во соединения SQLState = 3073).
Перекопал много, копал инет и на русском и на буржуйском, и на ms и на сторонних - натыкался только на вариант с отсутствующими правами доступа на файл(в основном касается asp-шников). Но файл вполне доступен(даже права полные для "Все" поставил - никак не вставляется).
Варианты с некорректными запросами, уникальностью данных и связанными таблицами тоже не подходят - таблица одна, ни с кем не связана. Все колонки создавались текстовыми. Про уникальность никаких намёков...
Сравнивал ConnectionString в vbs и в vba - одно и тоже, до последнего символа. Пробовал имя таблицы(листа) и в квадратные скобки заключать, и с долларом писать - не выходит каменный цветок .
Может кто-то с таким сталкивался и знает как лечить?
P.S. вариант работы с xls через Excel не подходит, т.к. офис на компьютере где необходим этот функционал отсутствует.