【问题标题】:Importing data from web page with diffrent Dates in excel using VBA code使用VBA代码从excel中不同日期的网页导入数据
【发布时间】:2013-02-07 22:50:24
【问题描述】:

我不知道如何从网站导入数据,从 2012 年 7 月 1 日到现在我都需要这样做。有什么想法吗?由于网址更改,我不知道该怎么做。我想导入 2012 年 7 月至今的所有数据,我可以通过网页的 html 源来导入吗?

Sub websitee()


With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;http://www.epexspot.com/en/market-data/intraday", Destination:=Range( _
    "$A$1"))
    .Name = "intraday"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlTables
    .WebFormatting = xlWebFormattingNone
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
     Union(Columns(3), Columns(4), Columns(5), Columns(7), Columns(8),           Columns(9)).Delete

     End With

End Sub

【问题讨论】:

  • 如果在您按日期过滤时 URL 发生了变化,您能否在连接中使用新的 URL?
  • 至少告诉我们 URL 每天采用什么格式!它应该只是动态生成 URL 的问题。您想继续每天自动执行此操作吗?
  • 它像这样 :epexspot.com/en/market-data/intraday/intraday-table/2013-02-06/… 随着日、月、年的变化而变化。我想导入从 2012 年 1 月 7 日到现在的所有数据。是的,理想的情况是我会从 2012 年 1 月 7 日开始自动执行此操作。任何想法@ElectricLlama tnx 供您发表评论
  • @Rick 我怎么能这样做?我需要 URL 来打开页面并导入数据
  • 我可能在这里遗漏了一些东西,但是在您的代码中,上面写着"URL;http://www....... 更改为带有日期的网址URL;http://www.epexspot.com/en/market-data/intraday/intraday-table/2012-07-01/

标签: excel vba date webpage


【解决方案1】:

下一次迭代:您现在可以调用 DownloadPeriod,它应该将数据放到 2012 年 1 月每天的第一工作表中。请测试,我们可以继续下一次代码迭代。

Sub DownloadDayFromUser()
     Dim sInput as String
     sInput = InputBox("Enter a date in YYYY-MM-DD format")
     Call websitee(sInput)
End Sub


Sub DownloadPeriod()
     Dim DownloadDay as Date
     DownloadDay = #1/1/2012#

     Do While DownloadDay < #1/2/2012#
         ' Create a new workbook to put the data into
         ActiveWorkBook.Worksheets.Add
         ' Call the web service for today
         Call websitee(Format(DownloadDay,"YYYY-MM-DD"))
         ' Increment the day
         DownloadDay = DownloadDay + 1
     Loop
End Sub

Sub websitee(sDate as String)


With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.epexspot.com/en/market-data/intraday/" & sDate & "/", Destination:=Range( _
"$A$1"))
.Name = "intraday"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlTables
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
 Union(Columns(3), Columns(4), Columns(5), Columns(7), Columns(8),           Columns(9)).Delete

 End With

结束子

【讨论】:

  • Tnx 为您的评论,我对 url 做了一些更正。当您输入日期时,它确实会导入表格,我的意思是特定日期。这很好,但我想导入一个特定的列(小时数和平均重量,而不是整个表)。你有什么想法我该怎么做?我的意思是当我输入日期作为输入时,我想将小时列和平均重量列相邻导入。如果您有任何想法,这将是至关重要的@ElectricLlama
  • epexspot 需要提供一个特殊的 URL 来检索一列。您是否仍然对检索不同日期的一系列数据感兴趣?
  • 好的,我已经更新了代码。测试并回复我,我们可以继续下一次迭代。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 2015-12-07
  • 2014-10-08
  • 1970-01-01
相关资源
最近更新 更多