• 締切済み

ACCESS、フィールドが異なるデータのインポート

例えば ファイル1 フィールド A B C D E データ   1 2 3 4 5 ファイル2 フィールド A C D E データ   6 7 8 9 のように、フィールドの項目数が異なるデータをインポートする場合は どのようにすればいいのでしょうか? アンケートのメールを処理するのですが、応えられていない項目についてはデータが無いもので・・・ ちなみにインポート処理さえ出来るのであれば、エクセルでもかまいません。 すみませんがよろしくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

質問に明確に書くこと。 テキストデータからか エクセルデータからか ーー エクセルでデータができている場合の話をします。 第1ブック inp1.xls A B C D E 1 2 3 4 5 11 22 33 44 55 とあるとします。 第1行目は、項目見出しにすること。 インポートすると ID A B C D E 1 1 2 3 4 5 2 11 22 33 44 55 となりました。 ーー 第2ブック inp2.xls A B C D E F G 6 7 8 9 10 空いているデータの無い列も項目見出しは、inp1.xlsの第1行目にそろえること。 ID A B C D E F G 1 6 7 8 9 10 とインポートされました。 ーー これでアクセスのテーブルはできました。後は必要あれば、テーブルデータの合体を行ってください。 判らないときは再質問か補足。

clapie
質問者

補足

書き込みをいただいてありがとうございます。 説明不足で申し訳ありませんでした。 下のご回答にも書いたのですが、メールをテキストで保存して エクセルにインポート、不要なヘッダーを削除して加工後 アクセスにインポートしようとしていました。 imogasiさんのご回答によれば、 fly moonさんと同じように各ファイルごとに異なるテーブルを作って、それを合体するということですよね? やはりそれしか出来ないですよね? 仕事が終わりましたら試してみてまた報告させていただきます。 ありがとうございました。

noname#140971
noname#140971
回答No.2

<D:\Temp\question001.txt> A,B,C,D,E 1,2,3,4,5 <D:\Temp\question002.txt> A,C,D,E 2,4,5,6 <questionnare> A___B____C____D____E 1___2____3_____4_____5 2___0____4_____5_____6 さて、上記の2つのファイルをメモ帳で編集して用意。 フォームからインポートしてみました。 <questionnare>が、作成されたテーブルです。 以下は、インポートのために書いたコードです。 INSERT INTO questionnaire (A,B,C,D,E) VALUES (1,2,3,4,5); INSERT INTO questionnaire (A,C,D,E) VALUES (2,,4,5,6); このような SQL文を作成して実行しているだけです。 まあ、簡単と言えば簡単なコードです。 まあ、初心者の方には難しいと言えば難しいコードです。 Private Sub コマンド0_Click()   Dim StopNow  As Boolean   Dim H     As Integer   Dim I     As Integer   Dim J     As Integer   Dim K     As Integer   Dim N     As Integer   Dim M     As Integer   Dim strFiles() As String   Dim strDatas() As String   Dim strFName() As String   Dim strField() As String   Dim strFLists As String   Dim strSQL   As String      ' ------------------   ' ファイル一覧取得   ' ------------------   strFiles() = GetFileList("D:\Temp", "question*.txt")   N = UBound(strFiles())   For I = 0 To N     ' ------------------------     ' ファイルデータ読み込み     ' ------------------------     strDatas() = FileReadArray("D:\Temp\" & strFiles(I))     ' -----------------     ' Field list 作成     ' -----------------     strFName() = Split(strDatas(0), ",")     K = UBound(strFName)     strFLists = strFName(0)     For H = 1 To K       strFLists = strFLists & "," & strFName(H)     Next H     ' -------------     ' Insert 実行     ' -------------     M = UBound(strDatas())     For J = 1 To M       If Len(strDatas(J)) > 2 Then         strField() = Split(strDatas(J), ",")         strSQL = "INSERT INTO questionnaire (" & strFLists & ") VALUES (" & strField(0)         For H = 1 To K           strSQL = strSQL & "," & strField(H)         Next H         strSQL = strSQL & ")"         StopNow = Not CnnExecute(strSQL)         If StopNow Then           Exit For         End If       End If     Next J   Next I End Sub GetFileList()、FileReadArray()、 CnnExecute()は、自作の関数です。 このような VBA に挑戦されるのであれば、3つの関数は公開します。

clapie
質問者

お礼

ありがとうございます。。。 ですが僕にはレベル高すぎてちょっと無理っぽいです(^^;) 詳しい回答ありがとうございました。

  • fly_moon
  • ベストアンサー率20% (213/1046)
回答No.1

こんにちは。 CSVとかじゃなくてメールを直接インポートするんですか?ACCESSでそんなことが出来るのは知りませんでしたが、インポート先を新規テーブルにしてそれを追加クエリでテーブルに追加する方法ではダメですか?

clapie
質問者

お礼

ありがとうございます! 今仕事中なので、終わったら試してみますね。 説明不足で申し訳なかったのですが、メールをテキスト保存して エクセルで開いて不要なヘッダーなどを削除、加工してアクセスにインポートするやりかたでやっているんです。すみませんでした。

関連するQ&A