2016-04-25 125 views
0

我有一堆启用了宏的Excel文件。我想通过一个SQL查询 - select * from [Sheet1$A10:AZ100]来遍历它们中的每一个。当我选择了一个文件时,我的Excel连接管理器工作正常,但是当我添加一个For Each Loop Task并为其分配我的变量时,存在很大的问题。 我的步骤是:
通过XLSM文件循环SSIS 2012

  • 创建新的连接:Excel连接管理器 我选择的文件夹中的第一个XLSM文件并点击OK。

  • 拖放每个环路容器并双击。 在集合中:我选择For Each File Enumerator并在文件夹中指定文件夹路径。在文件:* .XLSM最后一个选项是:完全合格
    变量映射:我创建了一个名为“的FileFound”

  • 拖放数据流任务在每个容器,并双击新的变量。

  • 拖动源助手:选择Excel连接管理器上面

  • 创建双单击Excel源和数据访问模式:我选择SQL命令。我的查询是select * from [Sheet1$A10:AZ100]。该查询对于所有XLSM文件都是相同的。

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

现在,这是哪里出了问题starts-

右键点击Excel连接管理器和命中属性。

  • 我首先复制我的连接字符串。我的连接字符串是: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\";" 这个评估正确。

  • 我然后设置Excel连接管理器的延迟确认为TRUE

  • 我设定延迟确认的每个集装箱为TRUE

我得到的错误是:

Error Message

如何解决此错误?我已经尝试了很多东西并阅读了所有内容,但无法超越这一点。

+0

将手表放在FileFound变量上,并在出现错误时查看该变量的值。它是什么?它是一个完整的有效的现有文件路径吗? –

+0

谢谢@TabAlleman。我会做你说的话,明天再报告,让你知道结果! – MaxPD

回答

1

我修好了!

我必须右键单击“Excel连接管理器”的属性,而不是在扩展属性中选择ConnectionString,我必须选择Excel File Path