通过XLSM文件循环SSIS 2012

我有一堆启用了macros的Excel文件。 我想通过一个SQL查询来循环每一个 – select * from [Sheet1$A10:AZ100] 。 当我select了一个文件时,我的Excel连接pipe理器工作,但是当我添加一个For Each Loop Task并将我的variables分配给它时,会出现一个大问题。 我的步骤是:

  • 创build新连接:Excel连接pipe理器我select文件夹中的第一个XLSM文件并点击确定。

  • 拖放每个循环容器并双击。 在集合中:我selectFor Each File Enumerator并在文件夹中指定文件夹path。 在文件中:* .xlsm最后一个选项是:完全合格
    在variables映射中:我创build了一个名为“FileFound”的新variables

  • 在每个容器中拖放数据stream任务并双击。

  • 拖动源助手:select上面创build的Excel连接pipe理器

  • 双击Excel来源和数据访问模式:我selectSQL命令。 我的查询是select * from [Sheet1$A10:AZ100] 。 这个查询对于所有的XLSM文件是相同的。

  • 点击列和我的数据显示一切OK

现在这是问题开始的地方 –

右键单击Excel连接pipe理器,然后点击属性。

  • 我先复制我的连接string。 我的连接string是: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\Excel data\ABCDE.xlsm;Extended Properties="Excel 12.0 MACRO;HDR=YES";

  • 我单击expression式并select属性中的连接string。 接下来我编辑我的expression式为: "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::FileFound] + " ;Extended Properties=\"Excel 12.0 MACRO;HDR=YES\";" 这是正确的评估。

  • 然后,我将Excel连接pipe理器的延迟validation设置为TRUE

  • 我将“每个容器的延迟validation”设置为“真”

我得到的错误是:

错误信息

我怎样才能解决这个错误? 我已经尝试了很多东西,读了所有的东西,但是没有能力过去。

我修好了它!!

我不得不右键单击“Excel连接pipe理器”的属性,而不是select扩展属性中的ConnectionStringstring,我不得不selectExcel File Path