マクロが有効な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\";"
これは正しく評価されます。私はその後、私は私が手にエラーがあるTRUE
にコンテナごとの遅延検証を設定TRUE
このエラーを解決するにはどうすればよいですか?私はそんなに試してみたが、すべてを読んだが、これを越えることはできなかった。
FileFound変数に時計を置き、エラーが発生したときにその変数の値を確認します。それは何ですか?それは既存のファイルへの完全で有効なパスですか? –
@TabAllemanありがとうございます。私はあなたが言ったことを行い、結果を知らせるために明日戻ってきます! – MaxPD