次の方法で共有


SQL Server データベース内の複数のテーブルから Excel 2013 ブックにデータをインポートすると、"インデックスが配列の範囲外でした" エラー

現象

Microsoft SQL Server 2012 データベースからMicrosoft Excel 2013 ブックにデータをインポートしようとする次のシナリオを考えてみましょう。

  • データ接続ウィザードを起動して、SQL Server データベースからブックへの接続を作成します。
  • データベースから複数のテーブルを選択します。
  • ブック内のインポートされたデータを表示する方法を選択します。 たとえば、テーブル、ピボットテーブル レポート、ピボットグラフ レポートを作成することを選択します。

このとき、次のエラー メッセージが表示されます。

データ モデルからデータを取得できませんでした。 次のエラーが発生しました。Index は配列の範囲外でした。

原因

この問題は、選択したテーブル名のいずれかが、データベース内のスキーマ名と一致する文字列で終わる場合に発生します。 データ接続ウィザードでは、複数のテーブルからデータをインポートするときに、完全修飾テーブル名の代わりにテーブル名のみが使用されます。

注 この問題は、データ接続ウィザードを使用して 1 つのテーブルからデータをインポートする場合には発生しません。 このような場合、データ接続ウィザードでは完全修飾テーブル名が使用されます。

回避策

この問題を回避するには、以下のいずれかの方法を使用します。

  • データ接続ウィザードを使用して、一度に 1 つのテーブルからデータをインポートします。
  • テーブル名の末尾にスキーマ名と一致する文字列がないことを確認し、複数のテーブルからデータをインポートします。
  • 「現象」セクションに記載されているエラー メッセージが表示されたら、次の手順に従って複数のテーブルからデータをインポートします。
    1. [データのインポート] ダイアログ ボックスで [ プロパティ ] をクリックします。
    2. Click the Definition tab.
    3. [コマンド テキスト] ボックスで、Database.Schema.TableName という形式を使用して、テーブル名を完全修飾テーブル名に変更します。