Vba 从Internet页面的下拉列表中选择
我是新vba,在这里。我在做股票,需要你的帮助。 所以首先,正如你们在标题上看到的,我想在下表中自动选择我在excel上写的内容。因此,我们需要从这个网站的“MALİTABLOLAR”页面中获取摊销信息。土耳其语中的摊销是摊销人,这是页面的结尾。我们编写的代码可以工作一半 ı只能进入“mali tablolar”页面,而ı无法从下拉列表中选择日期Vba 从Internet页面的下拉列表中选择,vba,web-scraping,drop-down-menu,Vba,Web Scraping,Drop Down Menu,我是新vba,在这里。我在做股票,需要你的帮助。 所以首先,正如你们在标题上看到的,我想在下表中自动选择我在excel上写的内容。因此,我们需要从这个网站的“MALİTABLOLAR”页面中获取摊销信息。土耳其语中的摊销是摊销人,这是页面的结尾。我们编写的代码可以工作一半 ı只能进入“mali tablolar”页面,而ı无法从下拉列表中选择日期 Sub Düğme2_Tıkla() sirketismi = Range("A2") Dim ie成为新的InternetExplorer 可见=
Sub Düğme2_Tıkla()
sirketismi = Range("A2")
Dim ie成为新的InternetExplorer
可见=真实
ie.navigate(“”&sirketismi)
在缩略中,我将写入a2单元,该宏将获取具有正确日期的摊销信息。
对不起,英语不好。
我希望你能理解我
感谢您的帮助您可以避免打开浏览器并使用更快的方法。该页面构造一个查询字符串,用于更新表值。响应是可以解析的json。例如,使用如下设置的“左”和“右”下拉列表,您可以在“网络”选项卡中查看xhr 查询字符串参数的示例: 左侧下拉列表生成: 权利产生: 请注意,货币定义为(
mn$
与mn TL
):
exchange:USD
或exchange=TRY
使用解析json,并将.bas添加到项目中,以及通过vbe>tools>references>MicrosoftScriptingRuntime
进行引用,您可以解析json中的值。还需要对Microsoft HTML对象库的引用
例如,第一个url的json响应
VBA:
Option Explicit
Public Sub GetInfo()
Dim html As HTMLDocument, col As Collection
Set html = New HTMLDocument: Set col = New Collection
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTabloShortTable?companyCode=EGEEN&exchange=TRY&year1=2018&period1=6&_=1547055336791", False
.send
col.Add JsonConverter.ParseJson(.responseText)("value")
.Open "GET", "https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTabloShortTable?companyCode=EGEEN&exchange=TRY&year1=2018&period1=3&_=1547055336792", False
.send
col.Add JsonConverter.ParseJson(.responseText)("value")
End With
EmptyDict col
End Sub
Public Sub EmptyDict(ByVal col As Object)
Dim item As Object, item2 As Object
For Each item In col
For Each item2 In item
Debug.Print item2("KT_TANIMI"), item2("value1")
Next
Next
End Sub
输出: 我是用`
Set HTMLdoc=ie.document
设置evtChange=HTMLdoc.createEvent(“HTMLEvents”)
evtChange.initEvent“change”,True,False
设置selectElement=HTMLdoc.getElementById(“ddlmailabledonem1”)
选择元素。值=范围(“B2”)
选择Element.dispatchEvent evtChange`
它可以工作
i=0到ie.document.getElementsByTagName(“td”).Length的
如果ie.document.getElementsByTagName(“td”)(i).innerText=“摊销人Gidereri”,则
结果=ie.document.getElementsByTagName(“td”)(i+1).innerText
范围(“B11”)。值=结果
如果结束
接下来,我
我的朋友感谢你的评论,但ı学习vba才几天,你的评论让我很难理解:(所以ıguessı应该学习vba json语言是的。但是如果您以后对代码有具体问题,请询问。是的。正如我上面所示。它是用vba编写的。它需要对xmlhttp和json有一点了解。在json中,[]表示每个over和{}的集合)是一个循环键的字典。我想我以前使用过相同的JSON解析器:D。不过,在VBA中解析JSON并不是一件有趣的事task@K.Dᴀᴠɪ这就是我目前对Json和python的看法。我想我一定是错过了某个窍门。这似乎是对一个新问题的回答,而不是对您现有问题的回答
Option Explicit
Public Sub GetInfo()
Dim html As HTMLDocument, col As Collection
Set html = New HTMLDocument: Set col = New Collection
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTabloShortTable?companyCode=EGEEN&exchange=TRY&year1=2018&period1=6&_=1547055336791", False
.send
col.Add JsonConverter.ParseJson(.responseText)("value")
.Open "GET", "https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTabloShortTable?companyCode=EGEEN&exchange=TRY&year1=2018&period1=3&_=1547055336792", False
.send
col.Add JsonConverter.ParseJson(.responseText)("value")
End With
EmptyDict col
End Sub
Public Sub EmptyDict(ByVal col As Object)
Dim item As Object, item2 As Object
For Each item In col
For Each item2 In item
Debug.Print item2("KT_TANIMI"), item2("value1")
Next
Next
End Sub