ExcelADO - Использование Range для извлечения данных из Excel с использованием VBScript - PullRequest
1 голос
/ 11 февраля 2010

Учитывая преимущества ExcelADO, как описано здесь Я решил использовать Excel ADO для автоматизации QTP. Итак, вот код, который я использовал -

'Open the ADO connection to the Excel workbook
Dim oConn
Set oConn = CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=D:\Mine\QTP\Book1.xls;" & _
           "Extended Properties=""Excel 8.0;HDR=NO;"""  


'Set Record Set Object       
Dim oRS 
Set oRS = CreateObject("ADODB.Recordset")

'Execute Query 
oRS.Open "Select * from qwerty", oConn, adOpenStatic 

'Get String
a = oRs.GetString() 

В упомянутом выше запросе 'qwerty' - это имя диапазона ячеек в Excel Sheet. Вышеупомянутый фрагмент кода работает идеально, если диапазон ячеек - это имя двух или более ячеек. Я считаю очень полезным использовать именованный диапазон ячеек вместо использования «имя листа» и / или «положения строк и столбцов»

Теперь, когда я называю только одну ячейку и использую приведенный выше фрагмент кода, выдается следующее исключение

» Механизм базы данных Microsoft Jet не смог найти объект «qwerty». Убедитесь, что объект существует и что вы правильно написали его имя и путь

код: 80040E37

"

Мне кажется, данные могут быть получены с использованием диапазона (именованных ячеек), только когда диапазон использует 2 или более ячеек. Это правильно? Если так, то как я могу получить данные только для одной именованной ячейки?

~ T

1 Ответ

0 голосов
/ 11 февраля 2010

Оба приведенных ниже примера работают для меня, как вы можете видеть, они очень похожи на ваш пример, за исключением IMEX = 1, который может иметь или не иметь значение.

MsgBox fExcelCellADO ("c:\docs\book1.xls","sheet1$b2:b2")
MsgBox fExcelCellADO ("c:\docs\book1.xls","therange")

Function fExcelCellADO(strFileName, strCell)

    Dim cn 
    Dim rs 

    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
             & "Data Source=" & strFileName & ";" _
             & "Extended Properties='Excel 8.0;HDR=No;IMEX=1';"

    Set rs = CreateObject("ADODB.Recordset")
    rs.Open "SELECT F1 FROM [" & strCell & "]", cn
    fExcelCellADO = rs.fields("F1")

    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing

End Function
...