Это должно дать вам несколько идей относительно генерации дат в цикле и конкатенации в URL текущей даты.Также демонстрируется, как добавлять новые листы.Я думаю, что, вероятно, есть лучшие методы очистки, чем генерация таблиц запросов, подобных этой.Если вы можете поделиться HTML-кодом для одной ссылки (а схема одинакова для каждого дня), возможно, удастся разработать гораздо лучший подход.
Исходя из комментария @ Marcucciby2, вы также можете получить startdate
с чем-то вроде: startDate = DateSerial(YEAR(Date), 1, 1)
Если исторические таблицы не обновлены, вы, вероятно, захотите запустить приведенный ниже один раз.Затем удалите цикл и просто сгенерируйте дату из dateString = Format$(Date, "dd.mm.yyyy")
или Date-1
, чтобы получить предыдущий день.Вы упоминаете, что хотите добавить его автоматически;Вы можете привязать событие изменения, которое связано с ячейкой, в которой вы выбираете дату из выпадающего списка.
Option Explicit
Public Sub test()
Dim url As String, startDate As Long, endDate As Long, i As Long, dateString As String
startDate = DateValue("2018-01-01")
endDate = CLng(Date)
For i = startDate To endDate
DoEvents
dateString = Format$(i, "dd.mm.yyyy")
url = "http://www.xyz342.net/abc/date_from=" & dateString & " 00:00:00&date_to=" & dateString & " 00:00:00&abc=2"
AddQueryTable url, dateString
Next
End Sub
Public Sub AddQueryTable(ByVal url As String, ByVal dateString As String)
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets.Add
ws.NAME = dateString
On Error Resume Next
With ws.QueryTables.Add(Connection:="URL;" & url, Destination:=ws.Range("a1"))
.Refresh BackgroundQuery:=False
.SaveData = True
End With
On Error GoTo 0
End Sub