通过URL编辑excel的URL

时间:2017-04-21 19:00:37

标签: excel vba excel-vba

我是一个相当新的vba编码,并希望在我玩一些代码时提供一些帮助。我正在尝试修改网址,以便搜索历史汇率动态

原始代码:

With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;http://www.x-rates.com/historical/?from=USD&amount=1&date=2017-04-20", _
    Destination:=Range("A1"))
    .PostText = "currency_exchange_practice"

我的新代码不起作用:

Dim dateday, datemonth, dateyear As Long, fulldate As Variant

Columns("A:D").ClearContents

dateday = Day(Range("G2"))
datemonth = Month(Range("G2"))
dateyear = Year(Range("G2"))
fulldate = dateyear & "-" & datemonth & "-" & dateday


With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;http://www.x-rates.com/historical/?from=USD&amount=1&date=" & fulldate & "", _
    Destination:=Range("A1"))
    .PostText = "currency_exchange_practice"

它还删除了单元格g2中的所有数据,包括我制作的按钮不在单元格A:D中。拜托,谢谢你的帮助!!

1 个答案:

答案 0 :(得分:1)

我认为问题在于您使用Month

4月的

Month将返回4而不是04,因此当您将fulldate传递到您传递的网址时2017-4-20而不是{{1} }}。如果我按照你的身份传递2017-04-20,我什么都没有回来。

要解决此问题,我首先会将您的日期部分声明为字符串,以便我们可以使用fulldate函数。这里一个重要的注意事项是您必须使用数据类型声明每个变量。在您编写完成后,Formatdatedaydatemonth,因为它们未明确指定数据类型。

Variants

然后你可以这样做:

Dim dateday As String, datemonth As String, dateyear As String, fulldate As String

现在,dateday = Format(Day(Range("G2")), "00") datemonth = Format(Month(Range("G2")), "00") 看起来像fulldate,应该可以使用。

我确实确认您使用的网站当天也需要两位数值。

我不确定为什么它会删除G列中的任何内容,除非您的查询表在放置在A1中时以某种方式重叠它。