我试图抓住一个内部网网站(因为内部网我无法分享链接,抱歉),其结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<begaraninkomstuppgift>
<xsl:for-each select="Förskoleansökan/Vårdnadshavare">
<person>
<xsl:attribute name="personummer">
<xsl:value-of select="personnummer"/>
</xsl:attribute>
<fornamn>
<xsl:value-of select="Vårdnadshavare/Förnamn" />
</fornamn>
<efternamn>
<xsl:value-of select="Vårdnadshavare/Efternamn" />
</efternamn>
</person>
</xsl:for-each>
</begaraninkomstuppgift>
</xsl:template>
</xsl:stylesheet>
所以基本上我正在寻找的信息都在<html>
<body>
<iframe id="myIframe">#document</iframe>
</body>
</html>
对象的文档中。在网页中,如果我尝试通过JavaScript以这种方式访问它,我能够做到:
iframe
但是,如果我尝试在VBA中执行相同操作,我只能因为对象document.getElementById("myIframe").contentDocument.getElementsByTagName("div")
为Set test2 = oHtml.getElementById("myIframe")
而无法使用。
我定义Nothing
的方式如下:
首先,我通过XMLHTTP请求获得了网页的HTML文档:
test2
因此,我已将Dim XMLHTTP As Object, oHtml As Object, pontod As Object
On Error Resume Next
Set oHtml = New HTMLDocument
With CreateObject("WINHTTP.WinHTTPRequest.5.1")
.Open "GET", websiteLink, False
.send
oHtml.body.innerHTML = .responseText
End With
声明为对象并尝试将其设置如下:
test2
同样,问题是以上Dim test2 As Object
Set test2 = oHtml.getElementById("myIframe")
设置为test2
,而如果我尝试在JavaScript(直接在网页上)上执行相同操作则不是这种情况。
这可能取决于我在VBA中获得的HTML文档来自Nothing
请求吗?有没有人有任何想法解决这个问题,并得到WINHTTP.WinHTTPRequest.5.1
的文件?
P.S。我明白在黑匣子上工作并不好'#34;但不幸的是,这是一个网内;请不要犹豫,询问您是否需要任何其他信息(只要我能提供:) :)
答案 0 :(得分:2)
你是否等待oHTML中的文档加载和渲染?
您还应验证从WinHTTPRequest获取的源是否与您在javascript中使用的源相同。