如何定期运行excelmacros,并将更新后的数据粘贴到新列中

我目前有一个API喂到我的excel ,从URL下载股票价格。 A2:A194A2:A194是公司名称, B2:B194是相应的股票价格。

我想创build一个每5分钟运行一次的macro ,获取新的价格并将其粘贴到相邻的列中。

这是我迄今为止能够实现的目标:

 [Sub GetPrice() ' ' GetPrice Macro ' ' Keyboard Shortcut: Ctrl+q ' ActiveWorkbook.RefreshAll ActiveCell.Offset(0, -1).Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy ActiveCell.Offset(0, 1).Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveCell.Offset(-1, 0).Range("A1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=NOW()" ActiveCell.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveCell.Offset(1, 0).Range("A1").Select Application.CutCopyMode = False ActiveCell.Offset(0, 1).Range("A1").Select Application.OnTime Now + TimeValue("00:05:00"), "GetPrice" End Sub] 

该macros从上一列而不是B2:B194提取数据。 我如何改变一样?

例如:在1小时结束时,我想要14列有数据:原始的2 + 12列与每5分钟取价。

沿着为什么它从前一列拉动的线。 这是因为你正在使用偏移量而不是声明你想要使用哪个列。 如果你知道这将是:

Sheets("Sheet1").Range("B2:B194")

那么只需编辑它定义该部分的macros。

这些macros是了解代码中发生的事情的好方法,但是我总是会编辑它们来提高效率或者更容易阅读。 主要是因为这么多的macros依赖于用户不断地点击和激活单元格,这对于插入某处的值或者要执行的函数来说是不必要的。 你也可以很快看到在后台发生的一切,看起来有问题。