Access Tips by pPoy

  
トップへ←Top    QueryへQuery  FormへForm  ReportへReport  Module(Sub)へSub  Module(Function)へFunction  ExcelへExcel  Etc.へEtc.  Word連携へWord

etc. Excel からのインポートで、インポートエラーを出さない方法 (Ac97,Ac2000,Ac2002)
Excel のワークシートを Access にインポートするとき、運が悪いと 「インポートエラー」 と
Access に文句を言われ、一部のデータが取り込めないときがあります。

インポート時のエラーメッセージに OK を出すと、インポートしたデータと一緒に、
テーブル名_$インポートエラー 」 テーブルが出来ています。
エラーの中身は殆ど、「データ型の変換エラー」 となっています。

これは大抵、数字データの中に文字列データが混じっているときに起こります。
以下は、データ型の変換エラーを回避しワークシートのデータを全てインポートする方法です。
≪準備≫

Sheet1

←このような Excel のデータがあります。

「code」 欄は殆ど数値ですが、
たまに英字から始まっているものもあります。
(※ 17行目以降)

このシートを Access にインポートします。
この頁のTOPへTop
≪失敗例≫

インポートエラー
取り合えず普通にインポートしてみますと、
インポートエラーの山が出来てしまいました。(>_<)

原因は、数値フィールド文字列
入れようとしたからです。

従って、この列は最初に Access 側で、
文字列型フィールドとして設定してやれば、
正常に読み込める筈です。


ところが、Excel からのインポートの際は、CSV のインポートのような、フィールド型の
設定画面はでてきません。

Access が Excel のデータを読み取って、最初の数行の値 によって、
Access でのフィールド型を決定しているのです。

・・・ということは、Excel データの一番最初の行 (項目名以外の行) に、
文字データがあれば、良いということになります。
≪方法1≫

シングルクォーテーション
一番簡単な方法は、シートの最初の行頭に、
'」 (シングルクォーテーション) をつけて、
文字列に変更することです。

先にエラーが出た列は、1行目だけ 修正します。
このまま一旦保存し再度インポートします。

今度は無事にインポートできます。
≪方法2≫

降順ソート
Excel データの並び順を変更しても良い場合は、
対象となる列を 「降順」 にソート後、
Access にインポートします。

降順ソートでは、文字列が上にきますので
全て文字としてインポートできます。
この頁のTOPへTop
≪注意≫

  • Excel 側の書式設定で、セルの値を 「文字列」 に変更しても、効果はありません。
    Access は実際の値を読み取って 「数値」 と判断してしまいます。

  • Access 側で予め、正しいデータ型の空のテーブルを用意してから、
    それにインポートすることでもエラーを回避できます。
    二度手間になるのでちょっと面倒ですが。(^^ゞ

  • VBA を使用してインポートする方法は、こちら (DAO 使用) か、こちら (ADO 使用) です。
    ※ VBA 使用時には Excel のデータ内容は解りませんので、
    予め仮テーブルを作ってそれに読み込むという方法を取っています。


この頁のTOPへTop
【念の為の注意書きです。】
このページ(下位ページ含む)の全ての物の無断転載を禁止いたします。又、当ページ(下位ページ含む)に記載されていることは、全て自己の責任において実行してください。

☆ 感想をお知らせください (直接ブラウザから送信致します。メールアカウントは不要です。)
  form mail はこちら

Copyright(C) pPoy 2005