繁体   English   中英

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

[英]VBA Open workbook from current cells value

嗨,我有一个电子表格,我想使用当前单元格值打开指定的URL并进入旁边的列。 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,但如果你知道一种方式也很乐意在这部分得到帮助!

谢谢

我把你给我们的链接放在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是您的第一个链接的位置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM