Excel 在VBA代码中使用用户输入并将数据提取到工作簿中
我正在探索网络垃圾,试图提高输入数据的效率。不幸的是,我希望从中提取数据的网站现在是表格格式的,因此我希望使用VBA来操纵网站以获得所需的结果 我不太熟悉编码/VBA,但到目前为止,我已经有了VBA来打开一个网站并搜索提供的值。在这种情况下,CAS编号Excel 在VBA代码中使用用户输入并将数据提取到工作簿中,excel,vba,Excel,Vba,我正在探索网络垃圾,试图提高输入数据的效率。不幸的是,我希望从中提取数据的网站现在是表格格式的,因此我希望使用VBA来操纵网站以获得所需的结果 我不太熟悉编码/VBA,但到目前为止,我已经有了VBA来打开一个网站并搜索提供的值。在这种情况下,CAS编号67-64-1参考网站上的丙酮 这方面的代码是: Sub BrowseToSite() Dim IE As New SHDocVw.InternetExplorer IE.Visible = True IE.Navigate "ht
67-64-1
参考网站上的丙酮
这方面的代码是:
Sub BrowseToSite()
Dim IE As New SHDocVw.InternetExplorer
IE.Visible = True
IE.Navigate "https://apps.who.int/food-additives-contaminants-jecfa-database/Search.aspx#"
Do While IE.ReadyState <> READYSTATE_COMPLETE
Loop
IE.Document.forms("form1").elements("ctl00$ContentPlaceHolder1$txtSearch").Value = "67-64-1"
IE.Document.forms("form1").elements("ctl00$ContentPlaceHolder1$btnSearch").Click
End Sub
Sub-BrowseToSite()
Dim IE作为新的SHDocVw.InternetExplorer
可见=真实
即“导航”https://apps.who.int/food-additives-contaminants-jecfa-database/Search.aspx#"
在IE.ReadyState ReadyState\u完成时执行此操作
环
IE.Document.forms(“form1”).elements(“ctl00$ContentPlaceholder 1$txtSearch”).Value=“67-64-1”
IE.Document.forms(“form1”)。元素(“ctl00$ContentPlaceholder 1$BTN搜索”)。单击
端接头
最后,我希望在excel表格中创建一个CAS编号列表,该代码可以循环使用并返回找到的短语(在本例中,当用作调味剂时,在当前摄入量水平下没有安全问题),或者只返回一个“未找到”。有时搜索会返回多个结果,目前我只希望得到第一个结果
这引发了两个问题,我不知道如何解决:
如何修改代码以循环工作表列中的值,而不必显式地给出每个值
2.我不确定如何将数据拉入相邻列
下面是所需输出的图像。A列由用户输入,B列由VBA代码创建
任何帮助都将不胜感激
您需要的是一个循序渐进的web抓取过程
我强烈建议您熟悉用于vba的seleniumbasic
您需要使用Range()或单元格(i,1)在excel行上循环读取该行
您可以使用集合检查搜索结果的数量
使用单元格(i,k)k作为返回的搜索结果数,在excel中行前保存任意多个结果。
不幸的是,该网站没有加载我来进一步帮助你
你好,谢谢你的回复。是的,不幸的是,这个网站确实偶尔会宕机,我不知道为什么。如果出于某种原因,我的代码中出现了错误,但您希望查看该网站,请点击这里的链接。它已关闭,不久将再次加载。这是一个更大的问题,进入网络刮,所以我会看看你的资源。