Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在VBA代码中使用用户输入并将数据提取到工作簿中_Excel_Vba - Fatal编程技术网

Excel 在VBA代码中使用用户输入并将数据提取到工作簿中

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

我正在探索网络垃圾,试图提高输入数据的效率。不幸的是,我希望从中提取数据的网站现在是表格格式的,因此我希望使用VBA来操纵网站以获得所需的结果

我不太熟悉编码/VBA,但到目前为止,我已经有了VBA来打开一个网站并搜索提供的值。在这种情况下,CAS编号
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中行前保存任意多个结果。 不幸的是,该网站没有加载我来进一步帮助你

  • 你好,谢谢你的回复。是的,不幸的是,这个网站确实偶尔会宕机,我不知道为什么。如果出于某种原因,我的代码中出现了错误,但您希望查看该网站,请点击这里的链接。它已关闭,不久将再次加载。这是一个更大的问题,进入网络刮,所以我会看看你的资源。