晚上好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
答案 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
函数的更多信息。