0

HTML テーブル (市場データ S&P 500 など) からデータベースに動的に入力するにはどうすればよいですか?

Yahoo!にアカウントを持っています。金融。アカウントでは、財務データを HTML で表示できます。

HTML テーブルからデータベース (Access) に入力するための簡単なツールが必要です。そのようなツールはどこにありますか?

4

3 に答える 3

1

Yahoo の履歴データから CSV としてエクスポートし、その csv ファイルを Access で MS Access テーブルとして直接リンクできます。http://office.microsoft.com/en-ca/access-help/import-or-link-to-data-in-a-text-file-HA001232227.aspx

HTMLページのソースを扱いたい場合は、このリンクが役立ちます。

http://www.access-programmers.co.uk/forums/showthread.php?p=1145646

于 2013-05-30T18:46:30.937 に答える
0

ACE/Jet OLEDB を使用して、HTML ファイルから直接データをインポートできます。たとえば、既存のAccess テーブル [DataFromHtml] があるとします。

ID  LastName
--  --------

および表を含む HTML ファイル

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <title>
        Test Data
    </title>
</head>
<body>
<table>
    <tr>
        <th>
            ID
        </th>
        <th>
            LastName
        </th>
    </tr>
    <tr>
        <td>
            1
        </td>
        <td>
            Thompson
        </td>
    </tr>
    <tr>
        <td>
            2
        </td>
        <td>
            O'Rourke
        </td>
    </tr>
</table>
</body>
</html>

次の VBA コードは、Access テーブル ( DELETE FROM) をクリアし、HTML テーブル データをそこにインポートします。

Sub ImportFromHtml()
Const LocalTableName = "DataFromHtml"
Dim con As Object, rstHtml As Object, fld As Object, _
        cdb As DAO.Database, rstAccdb As DAO.Recordset, _
        recCount As Long

Set con = CreateObject("ADODB.Connection")
con.Open _
        "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source=C:\Users\Gord\Documents\table.htm;" & _
        "Extended Properties=""HTML Import;HDR=YES;IMEX=1"";"
Set rstHtml = CreateObject("ADODB.Recordset")
rstHtml.Open "SELECT * FROM [Test Data]", con

Set cdb = CurrentDb
cdb.Execute "DELETE FROM [" & LocalTableName & "]", dbFailOnError
Set rstAccdb = cdb.OpenRecordset(LocalTableName, dbOpenTable)

recCount = 0
Do While Not rstHtml.EOF
    recCount = recCount + 1
    rstAccdb.AddNew
    For Each fld In rstHtml.Fields
        rstAccdb.Fields(Trim(fld.Name)).Value = Trim(fld.Value)
    Next
    Set fld = Nothing
    rstAccdb.Update
    rstHtml.MoveNext
Loop

rstAccdb.Close
Set rstAccdb = Nothing
Set cdb = Nothing

rstHtml.Close
Set rstHtml = Nothing
con.Close
Set con = Nothing

Debug.Print recCount & " record(s) imported"
End Sub
于 2013-05-30T20:00:38.057 に答える