自动从在线数据库下载数据

时间:2015-06-05 13:31:59

标签: database vba ms-access

这可能无法实现,但我正在尝试创建一个使用此链接中表格信息的MS Access数据库:

http://si3.bcentral.cl/Indicadoressiete/secure/Serie.aspx?gcode=PRE_TCO&param=RABmAFYAWQB3AGYAaQBuAFMALQAkADYAbgBNAGgAaAAkADUAVwBQAC4AbQBYADAARwBOAGUAYwBjACMAQQBaAHAARgBhAGcAUABTAGUAdwA1ADQAMQA0AE0AawBLAF8AdQBDACQASABzAG0AXwA2AHQAawBvAFcAZwBKAEwAegBzAF8AbgBMAHIAYgBDAC4ARQA3AFUAVwB4AFIAWQBhAEEAOABkAHkAZwAxAEEARAA=

编辑:一位用户认为该链接存在疑问。如果您不信任它,请在Google上搜索“智利中央银行统计数据库”。然后,导航到“观察到的美元”系列。我添加了链接,以方便人们使用。

有谁知道这是否可行?我对此非常陌生 - 理想情况下,我想在VBA中这样做。

谢谢!

2 个答案:

答案 0 :(得分:2)

简答:

通常,如果某个网站要向您开放它的资源,那么您将可以下载可下载的内容(CSV,TSV等)或API / Web服务调用,这可能会在此场景中返回JSON

在您关联的页面的右上角,您可以将此信息导出到Excel。在Excel中,您可以使用VBA直接导入Access中的表。

我假设您希望您的信息是实时的,或者其他什么?您可能可以构建一个可以自动执行此过程的Web应用程序,但它不是千篇一律。

答案 1 :(得分:2)

另一种方法是将页面按原样下载到" Daily Indicators.htm"。

转到外部数据,更多,HTML文档。

选择文件夹,选择文件,标记创建链接...,然后单击确定。

标记:显示HTML表格,选择Daily Indicators3,单击Advanced,将Dot设置为decimalseparator。单击“确定”,“下一步”。

检查第一行包含列头。单击“下一步”。

将每列调整为货币,完成并保存。

现在,您需要更新表格的所有内容是下载页面:

Option Compare Database
Option Explicit

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" ( _
    ByVal pCaller As Long, _
    ByVal szURL As String, _
    ByVal szFileName As String, _
    ByVal dwReserved As Long, _
    ByVal lpfnCB As Long) _
    As Long

Public Function DownloadFile( _
    ByVal strURL As String, _
    ByVal strLocalFilename As String) _
    As Long

' Download file or page with public access from the web.
' 2004-12-17. Cactus Data ApS, CPH.

' Usage, download a file:
' lngRet = DownloadFile("http://www.databaseadvisors.com/Graphics/conf2002/2002ConferencePicsbySmolin/images/dba02smolin27.jpg", "c:\happybassett.jpg")
'
' Usage, download a page:
' lngRet = DownloadFile("http://www.databaseadvisors.com/conf2002/conf200202.asp", "c:\dbaconference.htm")

' Returns 0 if success, error code if not.
' Error codes:
' -2146697210 "file not found".
' -2146697211 "domain not found".

' Limitation.
' Does not check if local file was created successfully.

    Dim lngRetVal As Long

    lngRetVal = URLDownloadToFile(0, strURL & vbNullChar, strLocalFilename & vbNullChar, 0, 0)

    DownloadFile = lngRetVal

End Function