2017-03-02 20 views
1

同じ列数(約616)と異なる行数で複数のcsvファイル(セミコロン区切り)を使用しています。私はすべてのファイルをAccessの異なるテーブルにインポートしたい。私はmacro/vbaに全く新しいです。 私は2つの問題に直面している:フォーラムから[私はこのコードを使用しhttps://superuser.com/questions/1131994/ms-access-2016-import-multiple-csv-files][1]複数のCSVファイルから複数のCSVファイルをvba /マクロを使用してAccess 2013にインポートする

  1. を、それが正常に動作しますが、それは分離セミコロンで1列に1つのテーブルに1 CSVファイルをインポートしていますが(CSVファイルから616個の列が表示されていることセミコロンで区切ってアクセスすると1つのクーランになります)。データは表の別々の列に表示する必要があります。データを別々の列に表示したい。インポート後、私はcsvファイルと同じアクセス権でデータを見ています。 csvファイルの列見出しにもテキストと数字(1〜600)があります。
  2. 次に、CSVファイルから特定の列をインポートしたいとします。誰かがこのコードを編集し、csvファイルから特定の列をAccessにインポートする方法をいくつか追加してください。

私はうまく説明したいと思います。

+3

データレイアウトを正規化する必要があります。アクセスできるフィールドは最大255フィールドのみです。これは、多くの列が不適切な保存方法であることを示しています。アクセスにデータをインポートするためのガイダンスについては、http://www.techrepublic.com/article/techniques-for-successfully-importing-excel-data-into-access/をお読みください。 – Minty

+0

この記事を送っていただきありがとうございます。私はアクセスが初めてです。私は本当にそれが最大値を持っていることを知りませんでした。 255フィールドの制限。今私はよく理解した。 – Abdul

答えて

0

600+列のファイルをAccessにインポートする方法はありません。 SQL Serverを試すことができます。または、必要な特定のフィールドをインポートすることもできます。私は真剣にあなたのデータセットに600以上のフィールドが必要であると疑う。

とにかく、特定のフィールドをExcelからAccessにエクスポートできます。

Sub DAOFromExcelToAccess() 
' exports data from the active worksheet to a table in an Access database 
' this procedure must be edited before use 
Dim db As Database, rs As Recordset, r As Long 
    Set db = OpenDatabase("C:\FolderName\DataBaseName.mdb") 
    ' open the database 
    Set rs = db.OpenRecordset("TableName", dbOpenTable) 
    ' get all records in a table 
    r = 3 ' the start row in the worksheet 
    Do While Len(Range("A" & r).Formula) > 0 
    ' repeat until first empty cell in column A 
     With rs 
      .AddNew ' create a new record 
      ' add values to each field in the record 
      .Fields("FieldName1") = Range("A" & r).Value 
      .Fields("FieldName2") = Range("B" & r).Value 
      .Fields("FieldNameN") = Range("C" & r).Value 
      ' add more fields if necessary... 
      .Update ' stores the new record 
     End With 
     r = r + 1 ' next row 
    Loop 
    rs.Close 
    Set rs = Nothing 
    db.Close 
    Set db = Nothing 
End Sub 
+0

申し訳ありません4遅く返信します。実際に説明するのは難しいです。 Siemens HMI上に表示される自動グラフは、すべてのデータをcsvファイルに保存しており、600列を超えています。大きなセンサーは、6〜7秒で左から右へ、右から左へ連続的に移動します(アルミホイルのコーティング厚さを読み取る)。したがって、左から右に移動すると、600列とそれ以外の方法で保存されます。そのため、HMIに描かれた自動グラフは、それらの600の値(左から右へ、そして他の方法では、ホイルの厚さの値)を使用しています。ちょうどあなたにアイデアを与える。私は残念なことにこれに新しいです – Abdul

+0

あなたは私が非常によくコードを説明した。やってみます – Abdul

関連する問題