首页 > 解决方案 > 从超链接打开的文件中提取数据

问题描述

我有一个从 yahoo Finance 打开 Excel 工作表的 URL。我想拿这张纸,然后在移动之前格式化数据。但是,下面的代码在没有格式化的情况下完成。可能与打开 Excel 工作表需要 5 秒钟有关。我试过延迟计时器,但这也不起作用。知道如何解决,也许是某种时间消磨循环?或者可能是延迟,然后需要以某种方式引用当前工作表。

Sub MAIN()

Call START

Dim i As Integer

    Workbooks("book1.xlsb").Sheets("links").Select

For i = 2 To 2
    
    Cells(i, 5).Select
    Selection.HYPERLINKS(1).Follow NewWindow:=False, AddHistory:=False

    With ActiveSheet.Range("A1:H1").Interior
        Columns("a:a").TextToColumns , DataType:=xlDelimited, COMMA:=True
        .Pattern = xlSolid
        .TintAndShade = -0.5
        Range("A:A").NumberFormat = "mm/dd/yyyy"
        Range("A:A").HorizontalAlignment = xlLeft
        Range("B:F").NumberFormat = "#,##0.00"
        Range("G:G").NumberFormat = "#,##0"
        Range("A:G").EntireColumn.AutoFit
    End With
    
    Sheets("LINKS").Select
    
Next
    
Workbooks("book1.xlsb").Sheets("links").Activate

'    Windows("book1.xlsb").Activate
'    Sheets("LINKS").Select
    
Call ENDING
    
End Sub

雅虎财经链接

标签: excelvba

解决方案


@Tim Williams 使用 workbooks.open(url) 回答。

这不仅有效,而且速度更快,并且允许我在这一行使用 text to columns 功能。

Sub MAIN1()

Call START

Dim i As Integer

For i = 2 To 2
    
    xtable = Cells(i, 5)
    xsheet = Cells(i, 4).Value
    Workbooks.Open xsheet, , , , , , , , 2

Next
    
Call ENDING
    
End Sub

推荐阅读