VBA从当前单元格打开工作簿值

时间:2017-02-08 15:11:10

标签: excel excel-vba vba

您好我有一个电子表格,我想使用当前单元格值打开指定的网址并输入旁边的列。 URL仅包含一组字符。我尝试使用相对引用打开录音并获得以下内容:

Sub GETASINV2()
'
' GETASINV2 Macro
'

'
    Selection.Copy
    Application.CutCopyMode = False
    Workbooks.OpenText Filename:="http://upctoasin.com/027616716927", Origin:= _
        xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
        , ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:= _
        False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
        TrailingMinusNumbers:=True
    Selection.Copy
    ActiveWindow.ActivateNext
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveSheet.Paste
    ActiveCell.Offset(1, -1).Range("A1").Select
End Sub

正如你所看到的那样,它似乎与文件名相对,它已经获取了我输入的值而不是我“复制粘贴值”的事实。

一旦完成,我想重复剩余的网址列表(大约3000)。我可能会发现有些重复,直到不再存在URL,但如果你知道一种方法也很乐意在这部分得到帮助!

谢谢

1 个答案:

答案 0 :(得分:0)

我将您提供给我们的链接放在行A1:A10中并运行以下代码以循环遍历每个单元格,并将单元格中链接的值放到右侧。

我还测试了1000个链接,它在279秒内完成 - 大约每秒4个。我有兴趣看看是否有人有更快的方法。

Sub GETASINV2()
    Application.ScreenUpdating = False

    Dim sht As Worksheet
    Set sht = ThisWorkbook.Worksheets("Sheet1") 'update for your worksheet name

    Dim inputRange As Range, r As Range
    Set inputRange = sht.Range("A1:A10") 'update for your range

    For Each r In inputRange
        With sht.QueryTables.Add(Connection:= _
            "URL;" & r.Value, Destination:=r.Offset(0, 1))
            .Refresh BackgroundQuery:=False
            .Delete
        End With
    Next r

    Application.ScreenUpdating = True
End Sub

<小时/>的更新

  

有没有办法根据没有间隙的记录数量计算出范围本身的大小?

是的,您可以替换它:

Set inputRange = sht.Range("A1:A10") 

以下内容:

Set inputRange = Range(sht.Range("A1"), sht.Range("A1").End(xlDown))

A1是第一个链接的位置