• 締切済み

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

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

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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

  • ACCESS2000でExcelから特定フィールドをインポートしたい

    ACCESS2000でExcelから特定のフィールドをインポートしたいのですが、 うまくいきません。 Excelはフィールド数が254フィールドもあり、 テーブルにインポートしたいフィールド数は30フィールドです。 Excelでは特定フィールドをインポートすることができないようなので、 一時テーブルに全てのフィールドをインポート後 必要なフィールドだけ取り出そうとやってみたのですが、 以下のコードを実行すると、13のフィールドが「解析不能なフィールド」と インポートエラーが出てしまいます。 DoCmd.TransferSpreadsheet acImport, 8, "TEMPテーブル", "c:\data.xls" また、Excelファイルをcsv形式に変換して、インポート定義を作る方法も やってみたのですが、インポート定義作成時に 「フィールド'ID'はインポートまたはエクスポートしようとしている テーブルまたクエリに存在しません」 というエラーが出てしまいます。 どうしたらインポートできるでしょうか。よろしくお願いします。

  • ACCESSのフィールドのデータを無重複に抽出する

    お世話になります。 ACCESS2000を使用しています初心者です。 あるフィールドに入力されているデータを無重複に抽出したいのですが、簡単で良い方法を教えて下さい。 エクセルでの無重複抽出はできるのですが、データ数が34万件くらいあり、推測される結果は2万件くらいになります。 例) 商品 A B C A B D C 結果 A B C D よろしくお願いします。

  • 【Win】ファイルメーカー⇔エクセル(インポート/エクスポート)

    ファイルメーカーPro 5.0で作成したデータをエクセルに エクスポートし、エクセル上でデータの修正等をして、 またファイルメーカーに戻したいと思います。(ファイルメーカーが 入っていないパソコンでデータを追加したりしたいため。) エクセルにエクスポートすると、フィールドを"繰り返し"に 設定している部分が、エクセル(コンマ区切りcsv、タブ区切りtab)では ひとつの列に『・』で区切られて入りますよね。 ファイルメーカー上 ⇒ フィールド1:「A」「B」「C」 エクセル上 ⇒ 列1:「A・B・C」 となりますが、 別のレコードの同じフィールドに「D」「E」「F」と入れたい場合 エクセル上でどう入力すれば良いのでしょうか。 「D・E・F」と入力すると、 ファイルメーカーにインポートしたときに「D・E・F」「(空欄)」「(空欄)」 となってしまいます。 分かりにくい説明で申し訳ありませんが、よろしくお願いします。

  • CSVの特定のフィールドをインポート

    load data local infileでcsvをインポートしているのですが ヘルプなどを見ても特定のフィールドのみを選択する方法がよく分かりません たとえば csv:フィールドA、フィールドB、フィールドC、フィールドD、フィールドE、フィールドF MySQL:カラム1、カラム2、カラム3、カラム4、カラム5 だとします、それを フィールドA→カラム2 フィールドC→カラム3 フィールドD→カラム4 フィールドF→カラム5 という風に選択したいのですがどういう風に指定したらいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • Accessのインポートについて(上書きと追加)

    Access2000を使用しています。 インポートについて教えて下さい。 あるテーブルにExcelデータをインポートしています。 「あるテーブル」の設定としましては主キーを設定して いて重複なしにしています。 実現したいこととしましては、Excelデータ上にAccessデータ(すでにあるデータ(主キー))があれば上書き保存して、なければ追加したいのです。 Access側        | Excel側 主キー フィールド1  |  列1  列2    A     ○      |   B   ○ B     ×      |   D   × C     ○      |   E   ×   つまり上記の表でAccess側Bデータのフィールド1の「×」 をExcelデータをインポートすることにより「○」に 変更(上書き保存)したいのです。 そして、Excel側D・EデータはAccessに新規レコードと して追加したいのです。 よい方法はないでしょうか? なお、私の知っている知識としましては、 インポートするとデータは上書き保存されずに 追加されてしまうということは知っているのですが。 以上、よろしくお願い致します。

  • ファイルメーカーのファイル間のデータのインポートについて

    Win XP FM6を使用しております。 初心者の為表現が適切でないかもしれませんが、アドバイスお願いいたします。 一度設定したインポートのスクリプト定義が、たとえば 共有ファイル(1)のフィールドa,bのデータを、 共有ファイル(2)のフィールドa,bへインポートしているとします。 これに加えて、 共有ファイル(1)のフィールドcのデータを、 共有ファイル(2)のフィールドcへインポートさせるように変更する場合、 【ファイル】→【インポート】から、再度インポートするファイルと フィールド(a,b,c)を設定し、インポート実行すればよいと思うのですが、 うまくいかないときがあります。 インポートを実行したときのみデータがインポートされているが、 スクリプトのフィールド指定が変更されていない (cのフィールドをインポートするように書き換えられていない。) などの症状になります。 おそらくインポート実行ボタンを押した後のソートその他の置換・維持の指定が 間違っていると思うのですが、実はこの置換・維持という内容が 良くわかりません。 データが消えてしまったことがあり、インポートをあまり触ることができないので、 インポートに関するアドバイスを頂けたらと思います。 よろしくお願いいたします。

  • アクセスへのインポートについて

    こんにちは。アクセスへインポートするエクセルファイルが 以下の構造になっており、どうした物か分からず困っており ます。 エクセルの1シート上にA列~IF列まで、行数は1~1200 行まで使用したデータがあります。 各セルに入力されているデータは、全て半角の文字10文字です。 又、不規則にブランクがあります。   A   B C ・・・・IF 1行目 123-456  456-321 213-901 2行目 ブランク ブランク 438-698 3行目 ブランク 361-465 ブランク  ・  ・ 1200行 このデータをアクセスのテーブル、1つのフィールドに 全部インポートするやり方が分からず、途方に暮れて おります。 アクセス、エクセルお詳しい方、何卒宜しくお願い致します。

  • アクセスインポート

    うまく質問できるか自信がないのですが、困っていますのでよろしくお願いします。 同僚がアクセスのテーブルをエクセルにエクスポートしてエクセルのほうの項目名を削除しデータの修正をしました。そして、その修正した内容だけを(削除した項目の内容はそのままでいい)アクセスに反映させてほしいと言ってきました。 テーブル名 資料 項目数は30 ID 氏名   番号   単位...   資格1  資格2  番号の内容 A AYUMI  1   1  EXCEL     B MASAYO  1   2  WORD   POWER エクセルファイル名 エクスポート 項目数は20 ID 氏名  番号の内容  単位...資格3 A AYUMI  上級      2 B MASAYO  上級      1 みたいな感じで(実際のデータとは違いますが) 項目数を10位減らし↑の場合だと単位の中のデータを変えたということをしました。(実際は他の項目数箇所を修正したようです)あと、項目の並び順も変更してあります。氏名の次が番号の内容になっている。 で、このエクセルファイル「エクスポート」の中だけ ↑の場合だと単位の1と2を変更するということを したいのですが、アクセス「資料」でインポートするとデータが倍??になりうまくインポートできません。自宅から投稿しているのでどんなエラーメッセージがでていたか思い出せないのですがm(__)m しょうがないので、目で見て1つずつデータを修正していたら時間がものすごくかかる上に、間違えそうで なんか良い方法はないものかと思い投稿しました。 データは1000件くらいはあります。 質問の意味がわからなかったら聞いてください。 よろしくお願いします。

  • Access2010 テーブルのフィールドについて

    Access2010を使用しています。 テーブルのフィールド定義 [A][B][C][D][E][F][G] ↓ テーブルを開くと [A][B][C][E][F][G][D] と勝手に変わる (あるフィールドだけ、別の場所に移動) ↓ フィールドの並び順を [A][B][C][D][E][F][G] に戻す ↓ 保存してテーブルを閉じる ↓ 再度開くと [A][B][C][E][F][G][D] と変わってしまう。 この繰り返しです。 どなたか、お助け下さい。 よろしくお願いいたします。

  • ACCESSへエクセルデータのインポートについて

    お世話になります。 ACCESSのデータとしてエクセルをインポートしたいのですが、エクセルのデータ は、11行目がフィールド名になり、13行目からデータが始まっている状態です。 このようなファイルはACCESSにインポートすることが可能でしょうか 可能であれば、定期的にインポートをしたく、情報の信憑性を保ちたいと考えております。 宜しくお願い致します。

専門家に質問してみよう