2016-06-23 2 views
0

Добрый вечер StackOverflow когорты,VBA Script Переберите определенный диапазон дат

После интересного крещения огнем в процессе обучения 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

Возможно, вы захотите прочитать следующее: http://stackoverflow.com/questions/38000194/difference-between-date-and-time-w-out-work-week-excel/38001028#38001028 – Ralph

+0

Сначала ваш 'С wkb' должен идти ниже строки 'Set wkb = ...', но нет никакой пользы. Если вы просто открываете эти ** txt ** файлы без входа в систему, Excel может открыть его напрямую и удалить компонент IE. – PatricK

+0

Привет, Ральф, чтобы сделать это еще более интересным, веб-страница, которую я использую, требует входа в систему, я думаю, что могу обмануть IE, чтобы только просить логин один раз, что помешало бы VBA просить пароль для каждой веб-страницы. I циклически –

ответ

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 на этот учебник тоже.

Смежные вопросы