使用带有VBA的Excel工作表动态填充网页中的下拉框

时间:2014-11-18 06:18:14

标签: html excel vba

我有一张Excel表格,其中包含从A1到A75的列表,该列表必须动态替换包含下拉列表的网页中的值。

对于每个替换值,它需要从网页上提取报告并将其保存到Excel工作表B.

所有这些功能都必须通过单击Excel中的表单控件按钮来实现。

请建议&发布代码(如果有的话)。


我是VBA和Excel的新手;我被指示用其他货币获取全球货币的价值。这必须在365天完成。

虽然我建议尝试使用Macro来将数据从网页拉到excel,但在查看网站后我才知道必须从下拉列表中选择每种货币并需要导出这些货币到excel文件。

这成为一个繁忙的问题,所以我想到了一个解决方案并提出了一个想法(我不确定这是否会起作用)并在此发布以寻求此问题的帮助。

// 对该问题的进一步帮助,Excel文件包含超过75种货币,并且需要使用系统日期选择这些货币,并且需要选择从“AED”到“ZWD”开始的货币代码,因为每个条目需要将文件导出到Excel中。该网页中有一个可用的选项。 //

希望这能澄清您的要求,如需进一步帮助,请告知我们!

最诚挚的问候,Pravin

2 个答案:

答案 0 :(得分:0)

1在Excel IDE中,添加对“C:\ Windows \ System32 \ ieframe.dll”的引用。

(按F11 excel转到IDE)(工具|参考|浏览|找到上述文件)

2使用以下代码创建一个模块并运行它。它将打开IE并进入雅虎网站

Sub aa()
Dim aa As New SHDocVw.InternetExplorer
aa.Visible = True
aa.Navigate "http://www.yahoo.com.hk"
Stop
End Sub

3通过这个想法完成上述程序:

  • Excel程序正在模拟用户导航到所需的网页。
  • 程序等待页面完全加载。然后通过aa.document阅读页面内容。
  • 将aa.document中的所需数据写入Excel工作表。
  • 重复。

答案 1 :(得分:0)

如果你没有良好的VBA和HTML知识,那就很难了。

通常,您可以使用http请求对象而不是IE自动化来完成此操作。这更快,从我的观点来看也更容易:

Dim oRequest As Object
Set oRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
oRequest.Open "GET", "http://www.cboden.de"
oRequest.Send
MsgBox oRequest.ResponseText

如果您在代理服务器后面,可以使用以下内容:

Const HTTPREQUEST_PROXYSETTING_PROXY = 2
Dim oRequest As Object
Set oRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
oRequest.setProxy HTTPREQUEST_PROXYSETTING_PROXY, "http://proxy.intern:8080"
oRequest.Open "GET", "http://www.cboden.de"
oRequest.Send
MsgBox oRequest.ResponseText

如果你想使用POST(而不是GET方法)将一些值传递给网络服务器,你可以试试这个:

Dim oRequest As Object
Set oRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
oRequest.Open "POST", "http://www.cboden.de/misc/posttest.php"
oRequest.SetRequestHeader "Content-Typ", "application/x-www-form-urlencoded"
oRequest.Send "var1=123&anothervar=test"
MsgBox oRequest.ResponseText

如果你将它放入一个函数中,那么你可以在你的工作表中使用它:

Function getCustomHyperlink(ByVal pURL As String) As String
    Dim oRequest As Object
    Set oRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
    oRequest.Open "GET", pURL
    oRequest.Send
    getCustomHyperlink = oRequest.ResponseText
End Function

在工作表中,您可以说例如:

=getCustomHyperlink("https://www.google.com/search?q=" & A1 )

如果您的搜索值在A1

如果必须使用GET,POST方法取决于您要检索的网站。