• 締切済み

エクセルのデータをAccessにインポートする時、フィールド数と名称の違いはエラーになりますか?

エクセルの項目は7個あるとします。 Accessは5個です。 エクセルには2個、アクセスにはない項目名があります。 他は同一の名称です。 エクセルからアクセスへマクロ機能を使ったワークシート変換するときにエラーは発生しますか? エクセルにあるデータだけをインポートして、ない項目は自動的に判断して無視してくれると、私の希望に沿うのですが、無理なことでしょうか? Acess2003、Excel2000を使っています。

  • 375k
  • お礼率60% (176/289)

みんなの回答

  • kurodai2
  • ベストアンサー率38% (77/202)
回答No.1

やり方によっては、エラーになります。 直接目的のテーブルにインポートするようにしない方が 色々な面で融通がききます。 例えば、EXCELから受け入れたデータを加工したい場合など。 EXCELからインポートするテーブルは、インポートウィザードで新規に インポートし作成されたテーブルを使用し、エラーなど入る込む余地の無い様にした方が良いです。 項目名も、フィールド1、フィールド2でも・・ そしてそのテーブルから、実際に格納したいテーブルへインサートのクエリを作成して流し込みます。 EXCELが仮に100項目あれば 100項目そのままけ入れ 必要な項目数が80であれば、その80の項目だけを実際のテーブルに格納すればいいです。 その際に、型の変換や 内容を変更する事もインサートクエリで吸収できます。 これらは、マクロで連続で処理するようにしておけば、1アクションで済みます。 1.一時受け入れテーブルクリア(削除クエリ) 2.EXCELから一時受け入れテーブルへインポート(エラーの起きないそのままの形で) 3.インサートクエリで、一時受け入れテーブルから、目的テーブルへ 必要なデータを追加する。 これを、1マクロで登録すれば OKです。 ですので、直接取り込む事を前提にされない方が、安全です。

375k
質問者

お礼

私の希望していることはやって出来ないことではないけれど、安全性に欠けることなんですね。 もう既に出来上がっているAccessに、使用者から項目を増やして欲しいとの要望が度々入り、そのテーブルと関連している全てオブジェクトを修正しなければならないので、手間に感じていましたが、都度、直すことにしました。 ご回答、ありがとうございました。

関連するQ&A

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

    エクセルにある複数のファイルをアクセスへインポートしようとしています。エクセルには数百のシートが存在し、アクセス上で個々のテーブルにインポートしたいと考えています。一つ一つやればいいのですが、マクロなどを使って、自動的にインポートする方法はないのでしょうか?何卒よろしくお願いいたします。

  • エクセルからアクセスにインポートすると、エラーが出てしまいます。原因を教えていただけませんか。

    エクセルからアクセスへインポートしようとしたところ次のエラーメッセージが出てしまいました。 「貼り付け先の’T履歴’テーブルには’F29’フィールドがありません。」 エクセルのセル29列には、データが全くありません。28列までデータが入っています。 アクセスには29列ありますが、1行目はオートナンバーの履歴IDです。 アクセス側はマクロを使用しています。 エクセル側も入力シートからインポートシートに整理するのにマクロを使っています。 今までは問題なく出来ていたのですが、「取引先ID」という項目を双方に増やしてからエラーが出るようになりました。 こういう現象が起きる原因はどのようなことが考えられますか? F29っなんのことを指しているのでしょうか?

  • Access2002でExcel2002のデータをインポートしようとした際に起こるエラー

    予めExcel2002で作成したワークシート(名前付)に、Access2002から一度データをエクスポートします。 この時点では旨くいっています。 Excelに出力する理由は回帰分析等、いくつかの分析を行う為で、Accessがクエリに搭載していない関数を使用するためです。 ここで、分析結果を別シート(同一ブック内)で参照するのですが、この参照するセル範囲(名前付部分)をインポートすると実際にインポートしたいのは分析結果である数値なのですが、インポートできず「データ型の変換エラー」が発生します。 VBで書くことも検討したのですが、ロジックが大変ややこしくなることと、Excelへ出力した方が時間的に早いので、エクスポートした後、結果数値のみをインポートするという手順をとっています。 インポートしようとしているデータは(数値)(テキスト)(日付)(日付)(数値)(数値)(数値)(数値)の順で、1行目にインポートしたいデータを配置しています。 このAccessからExcelへデータをエクスポートし、ExcelからAccessへ関数の入っているセルに存在する結果数値のみを取り込む方法をお教え下さい。 よろしく御願いします。

  • Excel → Access データをインポート

    OS WinXP Pro SP2 Office 2000 SP3 はじめまして。 マクロ(Excel VBA)を記述しているExcelファイル(Xls_Macro.xls)とインポート用データのExcelファイル(Xls_Data.xls)は別々のファイルになっていて、マクロを実行するとExcelファイルとインポート用データのExcelファイルのデータをAccessファイル(Access.mdb)にインポートする仕組みを開発しています。 インポート用データのExcelファイル(Xls_Data.xls)をADOで接続しレコードセットでデータを取得し、Accessファイル(Access.mdb)もADOで接続しレコードセットの「.AddNew」でAccessファイル(Access.mdb)に更新しようと考えています。 この考え方で問題ないのでしょうか!? もっと簡単な方法があるという方や、何か良い方法をお持ちの方 いらっしゃいましたら、よろしくお願いいたします。

  • 【Access】Excelインポート時にエラー

    お世話になります。 <環境>  Windows7 Pro  Excel2010  Access2003 Excelに番号、コード、数量の3列(A~C列)の表があります。その表をAccessにインポートしようとすると実行時エラー2391となります。 インポートはフォーム上のボタンよりダイアログを表示し、Excelを選択させてます。 で、手動でファイル⇒外部データの取り込み⇒インポートで当該Excelを選択し、「先頭行をフィールド名として使う」にチェックを入れタイミングで「先頭行に、Accessのフィールド名として使用できないデータが含まれています。フィールド名として有効な名前が自動的に割り当てられます。」と表示されることから、表外の箇所まで取り込もうとしてエラーになっているかと思われます。 しかし、Excel上で見ても表外の箇所は空白セルで何も入力されてません。 単純に表外の認識されていた5列(D~H)を削除すると、問題なくインポートできました。 ※いったん罫線を消して再度引きなおしてもダメでした。 このインポートしようとしているExcelは、元々別のExcelシートより必要な箇所をコピペして作成したものです。なので、コピペ作業の際に目に見えないゴミのようなものが入力?されてしまったのかもしれません。 また、Excel2010で作成したものを2003形式で保存しています。なので、その辺でのバグなのかもしれません。。 ※インポートする為のExcelは客先にて作成している為、コピペ作業はどのように行われているかは不明です。こちらで検証すると問題なくインポートできます。 上記と同じような現象になった方はいらっしゃいますでしょうか。また、そのときの回避策などございましたらご教授頂けたらと思います。

  • Excel → Access インポートのことで

    Access初心者です。Excel2000のシートを、Access2000に取り込み(インポート)をしたのですが、数字項目の先頭のゼロが省略されてしまいます。 ゼロを省略されないようにするにはどのようにすればいいのでしょうか?。

  • ACCESSでエクセルのインポート

    ACCESSでマクロを用いてタイトル行が付いているエクセルデータをタイトル行抜きでインポートをする方法を教えて下さい マクロのアクションのデータベース変換ではエクセルが選べなかたので・

  • ACCESSにEXCELからインポートした時に先頭に空列ができる

    ACCESS97、EXCEL97を使っています。 EXCELのワークシートにあるデータを、ACCESSにインポートしたいのですが、インポート後のACCESSのデータベースの先頭に空欄の列(以下「空列」)が勝手に9~10行くらいできてしまうのです(もちろんEXCELのデータには空列はありません)。 どうして空列ができてしまうのでしょうか。 原因や解消方法をご存知の方よろしくお願いします。ちょっとした可能性でも構いません。

  • Access から Excelのシートをインポート時エラー

    Access の既存のテーブルにExcelのスプレッドシートからデータをインポートするため次のコマンドを実行すると、 F1フィールドがない旨のエラーメッセージが表示されます。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "アクセスのテーブル名", "インポート元のエクセルファイル名.xls", False ここで、F1フィールドとは何でしょうか。 Excelのシートの1行目にAccessのテーブルの項目名と同名の項目名を挿入しておけば、上のコマンドの最後の引数をTrueにすればインポートは成功します。項目名のないスプレッドシートはインポートできないのでしょうか。 ご存知の方、教えてください。

  • AccessにExcelを追加でインポートできない

    Access97でExcelシートを新規テーブルにインポートしました。 1回目はうまく行くのですが、作成されたテーブルに 再度同じExcelをインポートすると 「ファイル~をインポートするときにエラーが発生しました。ファイルはインポートされませんでした。」 となります。 色々なデータで試しましたがOSは98でもXPでも同じでした。 もちろんテキストデータで保存してからインポートするのは問題ありません。 過去に同様の質問があるはずだと思ったのですが 探すことができませんでした。 みなさんのは出来ますか?