2

ワークブック フォルダーにある http://ichart.yahoo.com/table.csv?s=^GSPC のような csv ファイルを取得して、テーブル内に GSPC という名前のテーブルとして作成できるようにしたいと考えています。既存の空白の MS Access データベース。空のデータベース ファイルは同じフォルダーにあり、tblImport.accdb という名前が付けられます。私は多くのフォーラムのスレッドを見てきましたが、私のような初心者にとって十分に単純なものは何も見つかりませんでした. 私はどんな種類の助けにもとても満足しています.

4

1 に答える 1

2

CSV を Access にインポートする最も簡単な方法は、Access アプリケーション セッション内からDoCmd.TransferTextを使用することです。

しかし、Excel VBA を使いたいとします。その場合、MS Office のインストールに Access (MSACCESS.EXE) が含まれていれば、Excel VBA を使用して Access を自動化し、DoCmd.TransferTextCSV インポートを簡単に行うことができます。

このモジュールは Excel 2007 でテストしました。テーブルを作成し、そのテーブルGSPCにデータを格納table.csvします。テーブルが既に存在する場合は、TransferText単純に CSV データを追加します。実行DELETE FROM GSPC前に実行できるTransferTextため、テーブルには最新の CSV データのみが含まれます。

あなたが初心者だと言ったことを考えると、これは少し威圧的に見えるかもしれません. ただし、以下の多くは、ガイドとして追加したコメントです。その手順の実際の「根性」はかなり短くて単純です。

Option Explicit

Public Sub ImportCsvToAccess()
    Const cstrCsvFile As String = "table.csv"
    Const cstrDbFile As String = "tblImport.accdb"
    Const cstrTable As String = "GSPC"
    Dim strFolder As String

    '* early binding *'
    ' requires reference to Microsoft Access <version> Object Library
    'Dim objAccess As Access.Application
    'Set objAccess = New Access.Application

    '* late binding *'
    ' no reference required
    Dim objAccess As Object
    Set objAccess = CreateObject("Access.Application")

    ' this is useful during development
    ' in production, you may prefer to hide it (Visible = False)
    objAccess.Visible = True

    strFolder = ActiveWorkbook.Path & Chr(92)
    'Debug.Print strFolder
    objAccess.OpenCurrentDatabase strFolder & cstrDbFile, _
        Exclusive:=True

    '* early binding *'
    'objAccess.DoCmd.TransferText _
    '    TransferType:=acImportDelim, _
    '    TableName:=cstrTable, _
    '    Filename:=strFolder & cstrCsvFile, _
    '    HasFieldNames:=True

    '* late binding *'
    ' acImportDelim = 0
    objAccess.DoCmd.TransferText _
        TransferType:=0, _
        TableName:=cstrTable, _
        Filename:=strFolder & cstrCsvFile, _
        HasFieldNames:=True

    objAccess.Quit
    Set objAccess = Nothing
End Sub
于 2013-08-04T16:57:58.187 に答える