ExcelADO-使用范围使用VBScript从excel获取数据

ExcelADO-使用范围使用VBScript从excel获取数据,vbscript,qtp,Vbscript,Qtp,鉴于上述ExcelADO的优点,我决定将ExcelADO用于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;

鉴于上述ExcelADO的优点,我决定将ExcelADO用于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工作表中单元格范围的名称。若单元格范围是两个或多个单元格的名称,则上述代码工作正常。我发现使用命名单元格范围而不是使用“sheetname”和/或“行和列位置”非常有用

现在,当我只命名一个单元格并使用上面的代码段时,就会抛出以下异常

" Microsoft Jet数据库引擎找不到对象“qwerty”。请确保对象存在,并且正确拼写其名称和路径名

代码:80040E37

"

在我看来,只有当范围使用2个或更多单元格时,才能使用范围(命名单元格)获取数据。对吗?如果是这样的话,那么如何仅获取一个命名单元的数据


~T

下面的两个示例对我都适用,正如您所看到的,它与您的示例非常相似,只是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

你正在使用哪个版本的Excel。我的是excel 2003。