5

ヘッダーとフッターとして、いくつかのレコードなしでcsv Excelファイルからアクセスにデータをインポートするには、VBAで手順が必要です。例、、、テーブルの日付に属さない文を含むcsvファイルにテーブルがあります


A1 これは文のタイトルです.......
A2 タイトル
A3.......
A7 データ データ データ データ データ
A8 行 データ データ データ データ データ ...... ....
A256 データ データ データDATA
A257 これは文です


私のアクセスには、A7 から A256 までの行のみが含まれている必要があります。私の問題を解決するVBAの手順などを知っている人はいますか?

どうもありがとう


編集

4

2 に答える 2

17

これを行う最も簡単な方法は、CSV ファイルを Access データベースにテーブルとしてリンクすることです。次に、このテーブルを通常のアクセス テーブルであるかのように操作できます。たとえば、このテーブルに基づいて、必要なものを正確に返す適切なクエリを作成します。

手動で、またはこのようにVBAでテーブルをリンクできます

DoCmd.TransferText TransferType:=acLinkDelim, TableName:="tblImport", _
    FileName:="C:\MyData.csv", HasFieldNames:=true

アップデート

Dim db As DAO.Database

' Re-link the CSV Table
Set db = CurrentDb
On Error Resume Next:   db.TableDefs.Delete "tblImport":   On Error GoTo 0
db.TableDefs.Refresh
DoCmd.TransferText TransferType:=acLinkDelim, TableName:="tblImport", _
    FileName:="C:\MyData.csv", HasFieldNames:=true
db.TableDefs.Refresh

' Perform the import
db.Execute "INSERT INTO someTable SELECT col1, col2, ... FROM tblImport " _
   & "WHERE NOT F1 IN ('A1', 'A2', 'A3')"
db.Close:   Set db = Nothing
于 2012-06-30T15:49:44.523 に答える
6

あなたのファイルは非常に小さい (297 行) ように見えるので、非常に速く読み書きできます。存在しない Excel CSV を参照し、例にスペースで区切られたデータを示します。さらに、アクセスは 255 列に制限されており、CSV は制限されていないため、これが機能する保証はありません。

Sub StripHeaderAndFooter()
Dim fs As Object ''FileSystemObject
Dim tsIn As Object, tsOut As Object ''TextStream
Dim sFileIn As String, sFileOut As String
Dim aryFile As Variant

    sFileIn = "z:\docs\FileName.csv"
    sFileOut = "z:\docs\FileOut.csv"

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set tsIn = fs.OpenTextFile(sFileIn, 1) ''ForReading

    sTmp = tsIn.ReadAll

    Set tsOut = fs.CreateTextFile(sFileOut, True) ''Overwrite
    aryFile = Split(sTmp, vbCrLf)

    ''Start at line 3 and end at last line -1
    For i = 3 To UBound(aryFile) - 1
        tsOut.WriteLine aryFile(i)
    Next

    tsOut.Close

    DoCmd.TransferText acImportDelim, , "NewCSV", sFileOut, False
End Sub

さまざまなコメントを編集

テキスト ファイルを手動で MS Access にインポートすることができます。これにより、独自のセル区切り記号とテキスト区切り記号を選択できます。メニューから [外部データ] を選択し、ファイルを選択して、ウィザードを進める必要があります。

データおよびデータベース オブジェクトのインポートとリンクについて -- 適用対象: Microsoft Office Access 2003

データのインポートとエクスポートの概要 -- 適用対象: Microsoft Access 2010

ウィザードを使用してインポートが機能するようになったら、インポート仕様を保存し、@Olivier Jacot-Decombes によって概説されているように、次の DoCmd.TransferText で使用できます。これにより、セミコロンや単一引用符などの非標準の区切り文字を使用できます。

于 2012-06-30T16:21:42.357 に答える