尝试使用Vbscript在excel中查找数据并从HTA中的下拉列表中选择其值

尝试使用Vbscript在excel中查找数据并从HTA中的下拉列表中选择其值,excel,drop-down-menu,vbscript,hta,Excel,Drop Down Menu,Vbscript,Hta,我想首先补充一点,我是vbscript的新手,如果这是我缺少的一些简单的东西,那么很抱歉。我进行了搜索,但在找到正确的代码时遇到了问题(尽管这个网站帮了我很大的忙) 无论如何,我已经创建了一个HTA,您可以将数据输入表单并将其填充到excel电子表格中。如果序列号已在电子表格中,则会更新列,否则会添加新列。这一切都很好。我正在尝试添加一个子项,这样我就可以有一个搜索按钮来填充字段,这样你就可以在更新之前看到已经存在的数据。我能够填充文本框,但下拉列表无法选择匹配值。下面是填充表单的代码部分。如果

我想首先补充一点,我是vbscript的新手,如果这是我缺少的一些简单的东西,那么很抱歉。我进行了搜索,但在找到正确的代码时遇到了问题(尽管这个网站帮了我很大的忙)

无论如何,我已经创建了一个HTA,您可以将数据输入表单并将其填充到excel电子表格中。如果序列号已在电子表格中,则会更新列,否则会添加新列。这一切都很好。我正在尝试添加一个子项,这样我就可以有一个搜索按钮来填充字段,这样你就可以在更新之前看到已经存在的数据。我能够填充文本框,但下拉列表无法选择匹配值。下面是填充表单的代码部分。如果我将下拉列表更改为文本输入,那么它将很好地填充。我把箭头放在失败的两行的左边,我尝试了许多不同的方法,但它们似乎都失败了。希望这一切都有意义。提前谢谢

  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

由于您提供的信息相当不完整,我只能给您一个关于如何填充下拉列表的一般答案

HTML中的下拉列表是
元素,下拉列表中列出的项目是
元素。HTML代码看起来有点像这样:

<select id="fruit">
  <option value="green">Apple</option>
  <option value="yellow" selected>Banana</option>
  <option value="red">Strawberry</option>
</select>
'sample data
data = CreateObject("Scripting.Dictionary")
data.Add "green" , "Apple"
data.Add "yellow", "Banana"
data.Add "red"   , "Strawberry"

'get dropdown list element
Set list = document.getElementById("fruit")

'populate dropdown list with sample data
For Each fruit In data.Keys
  Set opt = document.createElement("OPTION")
  opt.Text  = data(fruit)
  opt.Value = fruit
  list.Add opt
Next
'get dropdown list element
Set list = document.getElementById("fruit")

'select matching element
For Each opt In list.Options
  If opt.Text = oWorksheet.Cells(r, c+5).Value Then opt.Selected = True
Next
如果这对您没有帮助,您需要提供有关源数据、要填充的元素以及结果外观的更多信息


编辑:如果要从已填充的下拉列表中选择与Excel电子表格中给定单元格的值匹配的选项,请执行以下操作:

<select id="fruit">
  <option value="green">Apple</option>
  <option value="yellow" selected>Banana</option>
  <option value="red">Strawberry</option>
</select>
'sample data
data = CreateObject("Scripting.Dictionary")
data.Add "green" , "Apple"
data.Add "yellow", "Banana"
data.Add "red"   , "Strawberry"

'get dropdown list element
Set list = document.getElementById("fruit")

'populate dropdown list with sample data
For Each fruit In data.Keys
  Set opt = document.createElement("OPTION")
  opt.Text  = data(fruit)
  opt.Value = fruit
  list.Add opt
Next
'get dropdown list element
Set list = document.getElementById("fruit")

'select matching element
For Each opt In list.Options
  If opt.Text = oWorksheet.Cells(r, c+5).Value Then opt.Selected = True
Next

谢谢你的回复,似乎我需要提供更多的信息,但我不知道该如何表达。上面的代码(我相信)定义了下拉框的选项。我已经用所有选项设置了html(例如A、B、C),我正试图用上面的两行从excel文档中获取现有数据,并从下拉列表中选择匹配选项。假设我有选项A、B和C。excel文档当前在单元格中有A。当你打开HTA时,我希望它能自动在下拉列表中选择一个。这正是我所希望的。我真的很感谢你的帮助!