2
Sub search       
Set objExl = CreateObject("Excel.Application")
Set objWb = objExl.Workbooks
objWb.Open("C:\Documents and Settings\user\Desktop\book.xls")
Set strbol = objWb("C:\Documents and Settings\user\Desktop\book.xls").Sheets(1).Cells.Find(document.getElementById("q").Value, Range("A1"), xlValues, xlPart, xlByRows, xlNext, False, False)
Set objDiv = document.getElementById("content")
objDiv.innerText = "Result: " & objWb.Sheets(1).Cells(strbol.Row,strbol.Column).Offset(0,-4).Value      
objWb("C:\Documents and Settings\user\Desktop\book.xls").Close
Set objWb = Nothing
Set objExl  = Nothing
End Sub

上記は、HTA テキスト ボックスからクエリ ワードを取得し、その単語を Excel で検索し、結果のオフセット行値を div という名前のコンテンツに返す/表示する HTA コードです。Excelファイルを開くまで、スクリプトを正常に実行できます。しかし、スクリプトは次の行でエラーを出します: Set strbol . . . エラー メッセージ: 下付き文字が範囲外です。

Excel vbaでfindメソッドをテストしましたが、HTAノートでは機能しませんでした:IE6から投稿しているため、インデントとフォーマットエラーについてはご容赦ください。

4

1 に答える 1

2

その範囲を完全に修飾する必要があります。

私もxlValues, xlPart, xlByRows, xlNextそれらの値に置き換えました。htaでは、VBS のように、コードの先頭で定数を定義できるかどうかはわかりません

これを試してください(hta で作業したことがないため、テストされていません)。

Sub search()
    Set objExl = CreateObject("Excel.Application")
    Set objWb = objExl.Workbooks.Open("C:\Documents and Settings\user\Desktop\book.xls")
    Set strbol = objWb.Sheets(1).Cells.Find(document.getElementById("q").Value, objWb.Sheets(1).Range("A1"), -4163, 2, 1, 1, False, False)
    Set objDiv = document.getElementById("content")
    objDiv.innerText = "Result: " & objWb.Sheets(1).Cells(strbol.Row, strbol.Column).Offset(0, -4).Value
    objWb.Close
    Set objWb = Nothing
    Set objExl = Nothing
End Sub

特記事項:

を使用しているため.Find、コードをトラップして、実際に一致が見つかったかどうかを確認する必要もあります。それ以外のobjDiv.innerText = "Result: " & objWb.Sheets(1).Cells(strbol.Row, strbol.Column).Offset(0, -4).Value場合は失敗します。

何かのようなもの

If Not strbol Is Nothing Then
    objDiv.innerText = "Result: " & _
                       objWb.Sheets(1).Cells(strbol.Row, strbol.Column).Offset(0, -4).Value
End If

フォローアップ (以下のコメントから)

VBS でテストされたコード。ファイルを作成しC:\Sample.xlsx、セルに「Sid」と入力N95してから、以下のコードを含む VBS ファイルを実行しました。エラーなしで動作し、メッセージボックスが表示されました$N$95

Dim objExl, objWb, strbol

Set objExl = CreateObject("Excel.Application")
Set objWb = objExl.Workbooks.Open("C:\Sample.xls")
Set strbol = objWb.Sheets(1).Cells.Find("Sid", objWb.Sheets(1).Range("A1"), _
             -4163, 2, 1, 1, False, False)

msgbox strbol.address

objWb.Close
Set objWb = Nothing
Set objExl = Nothing
于 2013-04-16T16:52:50.477 に答える