VBA脚本循环通过特定日期范围

时间:2016-06-23 22:35:25

标签: excel vba excel-vba loops

晚上好StackOverflow队列,

在学习VBA之后,有一次有趣的洗礼,我有一个关于在循环中执行我的脚本的更高级的问题。目前,我有一个脚本引用特定工作表中的单元格,其中包含当前日期。该脚本将此日期放入URL字符串的可变部分,然后从该网页执行数据检索。

我的目标是在其中的某处包含DATEDIF,以表示在上次提取的数据和今天的日期之间缺少了多少天。如果可能,脚本将能够相应地调整变量URL字符串以通过此循环替换每个日期,然后在先前提取的数据下方的工作表中添加数据。这是我目前的脚本:

Sub MasterDataIngest()

Dim sh1 As Worksheet
Dim wkb As Workbook

With wkb

Set sh1 = Worksheets("SheetOne")
Set wkb = Workbooks("SheetTwo")
Set IE = CreateObject("InternetExplorer.Application")

sh1.Activate

    IE.Visible = False

    IE.navigate "http://website.com/dir1/dir2/" & Format(Cells(1, 1).Value, "yyyymmdd") & "/file.txt"

    'Check for good connection to web page loop!

        Do
        If IE.readyState = 4 Then
        IE.Visible = False
        Exit Do
        Else
        DoEvents
        End If
        Loop

    'Wait for window to open!
    Application.wait (Now + TimeValue("0:00:02"))
    IE.Visible = False


    IE.navigate "http://website.com/dir1/dir2/" & Format(Cells(1, 1).Value, "yyyymmdd") & "/file.txt"

            IE.ExecWB 17, 0 '// SelectAll
            IE.ExecWB 12, 2 '// Copy selection
            sh1.PasteSpecial Format:="Text", link:=False,    DisplayAsIcon:=False
            sh1.Range("A2").Select
                IE.Quit

End With

End Sub

1 个答案:

答案 0 :(得分:0)

您可以使用DateDiff轻松完成此操作。

如果你这样叫DateDiff:

Sub Test()
Dim a as Long
Dim b as Date
Dim c as Date

b = CDate(Cells(1,1).Value)
c = CDate(Cells(1,2).Value)
a = Abs(DateDiff("d",b,c))

Debug.Print("The difference in days between b and c is " & a)

End Sub

这将为您提供两个提供日期之间的天数。通过这种方式,您可以轻松查看自上次检查以来的时间长度,如果您将上次日期与当前日期进行比较(您可以使用Now()

您也可以阅读有关如何在该教程中使用DateDiff函数的更多信息。