所以我目前停留在获取VBA脚本以从this Sudoku website检索输入框的值。但是,我能够使用相同的代码从我自己的简单网站获取id为“contact”的段落元素的值(当然,在切换url和id名称之后)。
任何进一步研究的尝试都会引发文章/博客,讨论到目前为止我所做的事情,所以我怀疑我没有正确研究它。
这是我的代码:
Sub GetTable()
Dim ieApp As InternetExplorer
Dim ieDoc As Object
Dim sudokuCell As Object
Dim url, id, content As String
Dim i As Integer
Set ieApp = New InternetExplorer
ieApp.Visible = True
url = "http://www.websudoku.com/"
ieApp.navigate url
Do While ieApp.Busy: DoEvents: Loop
Do Until ieApp.READYSTATE = READYSTATE_COMPLETE: DoEvents: Loop
Set ieDoc = ieApp.document
If ieDoc Is Nothing Then
MsgBox ("Nothing")
'Else
' MsgBox ("Something")
End If
For i = 0 To 8
Set sudokuCell = ieDoc.getElementById("f00")
content = sudokuCell.innerText
MsgBox (content)
Next i
ieApp.Quit
Set ieApp = Nothing
End Sub
以下是一个空白的单元格的HTML示例:
<td class="g0" id="c00"><input class="d0" size="2" autocomplete="off"
name="8iz6n11" maxlength="1" onblur="j8(this)" id="f00"></td>
这是一个预先填充数字的单元格:
<td class="f0" id="c10"><input class="s0" size="2" autocomplete="off"
name="s8iz6n21" readonly="" value="7" id="f10"></td>
我尝试了“c00”和“f00”都没有成功。另外,虽然我认为手头的问题是我没有检索元素,但我担心.innerText属性不会检索值。
答案 0 :(得分:0)
首先:网站正在使用FRAME,因此您实际上并未访问VBA代码中的框架文档。您需要导航到下面给出的实际URL - 将您的url变量更改为以下(这是框架的src属性):
url = "http://view.websudoku.com/?"
第二:那些是你试图获取值的INPUT元素,你应该更好地使用Value属性而不是innerText
content = sudokuCell.Value
第三个也是最后一个:我不知道你的代码在循环中应该做什么,因为它将继续按原样读取f00元素值。但是我相信你会遍历输入元素,只是在这里找到我上面解释过的FRAME问题,所以我认为循环是你的一部分而且没有任何麻烦。