Access にて 複数のデータ型が混在する Excel のデータ (XLS 形式 または XLSX形式) をインポートするときに、エラー メッセージ "データ型変換エラー" が表示される場合がある

Office 2003 のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Office 2003 のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

現象
Microsoft Office Access にて、複数のデータ型が混在する Microsoft Office Excel の Excel ブック形式 (XLS 形式 または XLSX 形式) のデータをインポートすると、次のエラー メッセージが表示される場合があります。

データ型変換エラー
原因
Access へ Excel のデータをインポートするときに、Excel のデータはスキャンされ、Access で使用するデータ型が決定されます。しかし、決定されたデータ型と実際にインポートされるデータとの間に矛盾がある場合、上記のエラー メッセージが表示されます。

データのインポート時に Access で使用するデータ型の決定には、TypeGuessRows レジストリ値 および ImportMixedTypes レジストリ値で設定された値が影響します。

TypeGuessRows レジストリ値で指定した行までデータ型が単一であるが、TypeGuessRows レジストリ値で指定した行より後に異なるデータ型が混在する場合、決定されたデータ型と異なるデータをインポートしようとした時点で上記のエラー メッセージが表示されます。

たとえば、20 行で構成された Excel のデータ (XLS 形式 または XLSX 形式) を Access へインポートする際に、インポートするデータの 8 行目までは "数値型" が使われており、9 行目から "テキスト型" が使われている場合を考えます。標準では TypeGuessRows レジストリ値が 8 であるため、データ型を判断する際、8 行目までスキャンされることになります。この例では、8 行目までは "数値型" が使われているため、Access はインポートするデータ型を "数値型" と判断します。しかし、実際はインポートするデータの 9 行目から異なるデータ型 (テキスト型) を含むため、Access は決定されたデータ型 (数値型) のインポート後、続いて、決定されたデータ型 (数値型) とは異なるデータ (テキスト型) のインポートを試みます。数値型のフィールドにテキスト型のデータをインポートすることはできないため、このエラーが発生します。
回避策
インポートする Excel データ (XLS 形式 または XLSX形式) の行数により回避策が異なります。

シートの先頭行から 16384 行目までに複数のデータ型が混在する場合

TypeGuessRows レジストリ値を変更します。

注意 : インポートする Excel のデータが大きい場合、TypeGuessRows レジストリ値に 0 を入力すると、パフォーマンスにわずかに影響が出る可能性があります。

16385 行目以降に複数のデータ型が混在する場合

Excel データ (XLS 形式 または XLSX形式) を CSV 形式のデータに変換し、Access へインポートをします。インポートする際に適切なデータ型を指定します。
詳細
以下の場合は、この現象は発生しません。
  • TypeGuessRows レジストリ値で指定した行までに複数のデータ型が混在する場合

    ImportMixedTypes レジストリ値で指定されているデータ型 (既定値はテキスト型) が採用されます。これにより、複数のデータ型が混在する環境が解消され、Access にインポートする際には 1 つのデータ型で統一されることになります。
  • TypeGuessRows レジストリ値で指定した行までデータ型が単一である場合

    1 つのデータ型に決定されます。
補足
: 本現象に関わる TypeGuessRows レジストリ値 および ImportMixedTypes レジストリ値について説明します。TypeGuessRows レジストリ値 および ImportMixedTypes レジストリ値は、次のレジストリ キー配下に存在します。

Access 2003 の場合 :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel

Access 2007 の場合 :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel
Access 2010 の場合 :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel
  • TypeGuessRows レジストリ値

    TypeGuessRows レジストリ値とは、データ型を判断するためにスキャンする Excel シートの行数を指します。先頭行から指定された行までに格納されているデータをスキャンしてデータ型を決定します。

    TypeGuessRows レジストリ値の有効範囲 : 0 ~ 16
    TypeGuessRows レジストリ値の既定値 : 8

    TypeGuessRows レジストリ値が 1 の場合は 1 行目まで、TypeGuessRows レジストリ値が 16 の場合は、先頭行から 16 行目までスキャンされます。既定値の設定のままであれば、8 行目までスキャンされることになります。

    : TypeGuessRows レジストリ値が 0 の場合は、先頭行から 16384 行目 (指定可能な最大行数) までスキャンされます。
  • ImportMixedTypes レジストリ値

    ImportMixedTypes レジストリ値とは、TypeGuessRows レジストリ値に基づいてスキャンした範囲に複数のデータ型が混在する場合に採用されるデータ型を指します。

    ImportMixedTypes レジストリ値の既定値 : Text
プロパティ

文書番号:968580 - 最終更新日: 09/20/2016 12:18:00 - リビジョン: 3.0

Microsoft Office Access 2003, Microsoft Office Access 2007, Microsoft Access 2010

  • kbharmony kbexpertiseinter kbexpertiseadvanced kbtshoot kberrmsg KB968580
フィードバック