Выбор данных из закрытого листа Excel с помощью ADO

У меня есть книга под названием "SomeFile.xlsx", мне нужно подключиться к этому листу и извлечь ряд данных из листа. Я пытаюсь подключиться с помощью ADO безуспешно. У меня есть следующий код:

Sub ExtractData()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim PathName As String
Dim PathRange As String

    PathRange = "SELECT * FROM [AddConvert$D4:D10];"
    PathName = "C:\path\myFile.xlsx"
    Set cnn = New ADODB.Connection
    With cnn
        .Provider = "Microsoft.ACE.OLEDB.12.0 "
        .ConnectionString = "Data Source=" & PathName & ";Extended Properties=Excel 12.0;"
        .CursorLocation = adUseClient
        .Open
    End With  'Works fine up to here
    Set rs = cnn.Execute(PathRange)  'Dies here

End Sub

Все работает, насколько я могу судить. Я положил часы на cnn и разрыв на последней строке. cnn выглядит хорошо. Однако, он все время говорит, что не может найти лист AddConvert и получить данные. Я не понимаю, почему он не может его найти или что происходит.

1 ответ

Решение

Вы должны использовать Excel 12.0 для файлов.xlsx. Пример:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;
    Extended Properties="Excel 12.0 Xml;HDR=YES";

из цепочек соединений

Другие вопросы по тегам