将URL从浏览器复制到Excel

时间:2016-02-17 11:48:57

标签: excel vba excel-vba url

我的公司使用短网址进行营销广告系列,该网址会重定向到包含跟踪的网址。例如:

  

example.com/campaign

将重定向到:

  

example.com/utm_source=的一个&安培; utm_medium = 2 &安培; utm_term = 3 &安培;的utm_content = 4 < /强>&安培; utm_campaign = 5

我有一个包含短网址列表的Excel文件,但未列出跟踪网址。当前流程是手动打开每个链接并复制URL。

有没有办法使用VBA将跟踪网址复制到Excel?

到目前为止,我已经探讨了以下内容:

Dim ie As Object
Set ie = CreateObject("Internetexplorer.Application")
ie.Navigate Cells(1, 1)

但我无法找到将新网址复制回excel的方法。

我也尝试过:

Dim link As Hyperlink
Cells(1, 1).Select
Set link = ActiveSheet.Hyperlinks.Add(Anchor:=Cells(1, 1), Address:=Cells(1, 1))
link.Follow
Cells(1, 2) = link.Address

然而,这只是(不出所料)带回原始超链接。

如何恢复跟踪网址?理想情况下,无需安装任何其他软件(因为我公司的IT部门是一个噩梦),但如果这是唯一的选择那么就是它。

2 个答案:

答案 0 :(得分:3)

我相信这会做你想要的:

Set webClient = CreateObject("WinHttp.WinHttpRequest.5.1")
webClient.Option(6) = False
webClient.Open "GET", Cells(1, 1), False
webClient.send ("")
Cells(1, 2) = webClient.GetResponseHeader("Location")

我从这个other answer得到了这个想法。

您要做的是获取您重定向到的位置。

重定向遵循here所描述的标准流程......我只是从响应中抓取相应的标题。

答案 1 :(得分:1)

您需要.LocationURL属性

Const READYSTATE_COMPLETE As Long = 4
Dim IE As Object

Set IE = CreateObject("InternetExplorer.Application")

IE.Navigate Cells(1, 1).Value

'// Wait for page to finish loading
While IE.Busy Or IE.ReadyState <> READYSTATE_COMPLETE
    DoEvents
Wend

Cells(1, 2).Value = IE.LocationURL