2016-04-25 9 views
0

マクロが有効なExcelファイルがたくさんあります。私はそれらのそれぞれをSQLクエリ-でループします。 1つのファイルを選択したときにExcel接続マネージャが機能しますが、For Eachループタスクを追加して変数を割り当てると大きな問題が発生します。 私の手順は次のとおりです。
XLSMファイルをループするSSIS 2012

  • は、新しい接続を作成:Excelの接続マネージャ を私はフォルダ内の最初のXLSMファイルを選択し、[OK]を押します。

  • 各ループコンテナのドラッグアンドドロップをダブルクリックします。 コレクション中:For Each File Enumeratorを選択し、フォルダ内でフォルダパスを指定します。ファイルでは:* .xlsm最後のオプションは次のとおりです。変数のマッピング完全修飾
    :私は、各コンテナをダブルクリックするために「FileFound」

  • ドラッグ&ドロップデータフロータスクと呼ばれる新しい変数を作成します。

  • ドラッグソースアシスタント:

  • 上記で作成したExcelの接続マネージャを選択してダブルエクセルソースをクリックして、データアクセスモード用:私は、SQLコマンドを選択します。私の質問はselect * from [Sheet1$A10:AZ100]です。このクエリはすべてのXLSMファイルで同じです。

  • 列をクリックして、私のデータは問題starts-

    右クリックしてExcelの接続マネージャとは、プロパティを打つ場所

は今、これがすべてOKを示しています。

  • 最初に接続文字列をコピーします。私の接続文字列は:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\Excel data\ABCDE.xlsm;Extended Properties="Excel 12.0 MACRO;HDR=YES";

  • 私は式をクリックし、プロパティの接続文字列を選択します。次に、式を次のように編集します。 "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::FileFound] + " ;Extended Properties=\"Excel 12.0 MACRO;HDR=YES\";" これは正しく評価されます。

    Error Message

  • 私はその後、私は私が手にエラーがあるTRUE

にコンテナごとの遅延検証を設定TRUE

  • にExcelの接続マネージャの遅延検証を設定します

    このエラーを解決するにはどうすればよいですか?私はそんなに試してみたが、すべてを読んだが、これを越えることはできなかった。

  • +0

    FileFound変数に時計を置き、エラーが発生したときにその変数の値を確認します。それは何ですか?それは既存のファイルへの完全で有効なパスですか? –

    +0

    @TabAllemanありがとうございます。私はあなたが言ったことを行い、結果を知らせるために明日戻ってきます! – MaxPD

    答えて

    1

    私はそれを修正しました!

    「Excel接続マネージャ」のプロパティを右クリックして、拡張プロパティでConnectionStringを選択する代わりに、Excel File Pathを選択する必要がありました。

    関連する問題