ここで説明した ExcelADO の利点を考慮して、QTP Automation に Excel ADO を使用することにしました。だからここに私が使用したコードがあります -
'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 シートのセル範囲の名前です。セル範囲が2つ以上のセルの名前である場合、上記のコードは完璧に機能します。「シート名」や「行と列の位置」を使用する代わりに、名前付きのセル範囲を使用すると非常に便利です。
1つのセルに名前を付けて上記のコードを使用すると、次の例外がスローされます
" Microsoft Jet データベース エンジンはオブジェクト 'qwerty' を見つけることができませんでした。オブジェクトが存在すること、およびその名前とパス名のつづりが正しいことを確認してください
コード: 80040E37
"
範囲が2つ以上のセルを使用する場合にのみ、範囲(名前付きセル)を使用してデータを取得できるように見えます。それが正しいか?もしそうなら、どうすれば1つの名前付きセルだけのデータを取得できますか?
〜T