Я нахожусь в процессе перемещения всех листов Lotus, которые есть у компании, на сервер SQL, и я использую таблицы MS Access в качестве посредника. Этот код работал нормально для листов, которые не названы, но я встречал около 2300 или около того листов, где он назван онемевшим. Слишком много файлов, чтобы я мог вручную изменить их все.
Ошибка, которую я получаю: Ошибка времени выполнения '-2147217865 (80040e37)': ядру базы данных Microsoft Jet не удалось найти объект "numb: A1..numb: A8000". Убедитесь, что объект существует, и что вы правильно написали его имя и путь.
Найден этот сайт, но он не дал ответа
Я видел различные варианты получения адресата прямо при вызове ADOB («SELECT * FROM [numb: A1..numb: A8000];» или («SELECT * FROM [numb $: A1..numb $: A8000];») и они не сработали.
Вот код функционирования, когда лист не назван:
Dim rst As DAO.Recordset
Dim rs As DAO.Recordset
Dim LotusCn As Object
Dim rsLotus As Object
'Read WK3 Lotus files
repcode = rs![Code]
Directory = rs![Directory]
Directory = Directory & "NUMDATM.WK3"
Set LotusCn = CreateObject("ADODB.Connection")
Set rsLotus = CreateObject("ADODB.Recordset")
'This creates the objects for the lotus connctions
'below the connection string
LotusCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Directory & ";" & _
"Extended Properties=Lotus WK3;Persist Security Info=False"
strSQL = "SELECT * FROM [A1..A8000];" 'The SQL to pick the right sections of the lotus file. Picks the Latest Available Date
rsLotus.Open strSQL, LotusCn, adOpenStatic '<<< ***Error occurs here***
If Not (rsLotus.EOF And rsLotus.BOF) Then
FindRecordCount = rsLotus.RecordCount
rsLotus.MoveFirst
Do Until rsLotus.EOF = True
Debug.Print rsLotus.Fields(0).Value
If Len(rsLotus.Fields(0).Value) > 0 Then
rst.AddNew
rst!RegNo = rsLotus.Fields(0).Value
rst.Update
End If
rsLotus.MoveNext
Loop
End If
LotusCn.Close
strSQL = ""
Set rsLotus = Nothing
Set LotusCn = Nothing
Кто-нибудь знает, как получить именованные электронные таблицы?