鉴于此处描述的 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 工作表中单元格区域的名称。只要单元格范围是两个或多个单元格的名称,上述代码就可以完美运行。我发现使用命名单元格区域而不是使用“工作表名称”和/或“行和列位置”非常有用
现在,当我只命名一个单元格并使用上面的代码时,会引发以下异常
" Microsoft Jet 数据库引擎找不到对象 'qwerty'。确保对象存在并且正确拼写其名称和路径名
代码:80040E37
"
在我看来,只有当范围使用 2 个或更多单元格时,才能使用范围(命名单元格)获取数据。这是正确的吗?如果是这样,那么我怎样才能只为一个命名单元格获取数据?
〜T