私は最初に、私はvbscriptに非常に慣れていないことを付け加えたいと思います。これが私が見逃している単純なものであれば申し訳ありません. 私は検索しましたが、正しいコードを思い付くのに問題があります (ただし、このサイトは私を大いに助けてくれました)。
とにかく、フォームにデータを入力して Excel スプレッドシートに入力できる HTA を作成しました。シリアル番号がスプレッドシートに既にある場合は、列が更新されます。そうでない場合は、新しい列が追加されます。これはすべて正常に機能しています。SUB を追加しようとしているので、検索ボタンを使用してフィールドにデータを入力できるので、更新する前に既にそこにあるデータを確認できます。テキスト ボックスに入力することはできますが、ドロップダウン リストで一致する値を選択できません。フォームに入力するコードのセクションを次に示します。ドロップダウンをテキスト入力に変更すると、正常に入力されます。失敗している 2 つの行の左側に矢印を配置しました。さまざまなことを試しましたが、すべて失敗しているようです。うまくいけば、それはすべて理にかなっています。前もって感謝します!
Sub SearchINV()
Dim FSO, oExcel, oData, FoundCell, FindTag, FilePath, oWorkSheet
FindTag = document.all.serial.value
FilePath = "C:\file.xlsx"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oExcel = CreateObject("Excel.Application")
Set oData = oExcel.Workbooks.Open(FilePath)
oData.Worksheets("sheet1").Select
Set FoundCell = oData.Worksheets("sheet1").Range("A1:A20000").Find(FindTag)
oExcel.DisplayAlerts = False
Set FoundCell = oData.Worksheets("sheet1").Range("A1:A20000").Find(FindTag)
If Not FoundCell Is Nothing Then
Dim r, c
r = FoundCell.Row
c = FoundCell.Column
Set oWorkSheet = oData.Worksheets("sheet1")
document.getElementById("serial").value = FoundCell.Value
document.getElementById("combination").value = oWorksheet.Cells(r, c+1).Value
document.getElementById("last").value = oWorksheet.Cells(r, c+2).Value
document.getElementById("first").value = oWorksheet.Cells(r, c+3).Value
document.getElementById("department").value = oWorksheet.Cells(r, c+4).Value
---> document.getElementById("floor").value = oWorksheet.Cells(r, c+5).Value
---> document.getElementById("building").value = oWorksheet.Cells(r, c+6).Value
Else
MsgBox (FindTag & " not found")
End If
Set File_Path = nothing
Set FindTag = nothing
Set FoundCell = nothing
oData.Close
oExcel.Quit
Set oWorkSheet = Nothing
Set oData = Nothing
Set oExcel = Nothing
Set FSO = Nothing
End Sub