通过在SSIS中运行excel VBA宏来自动执行流程

时间:2014-08-04 20:14:15

标签: sql excel vba ssis etl

最近,我有一个项目需要通过将SSIS包和excel VBA宏组合成一个来自动化流程。以下是步骤:

  1. 我有一个SSIS包,将所有视图结果导出到从sql server到excel的多个单独文件。所有文件都保存在同一位置。

  2. 我有一个excel VBA宏执行清理,以删除每个导出的Excel文件中的所有空白页。

  3. 我还有一个excel VBA宏执行合并任务,将所有excel文件合并到主excel文件中。此主Excel文件包含所有结果集,并且相应地保存在不同选项卡上的每个结果集。

  4. 由于我手动运行第2步和第3步,所以我的问题是如何将步骤2和步骤3与步骤1连接起来,将它们组合为一个自动化过程。

    请告诉我有关实现这种可能性的建议!非常感谢。

1 个答案:

答案 0 :(得分:5)

执行此操作的方法是在SSIS包中创建脚本任务。

然后,一旦进入脚本任务,就可以通过脚本任务的C#代码调用Excel互操作。例如您可以添加对Microsoft.Office.Interop的引用。在脚本任务的C#代码中使用该库后,可以添加一些将调用宏的代码。 e.g。

oExcel = CreateObject("Excel.Application")
oExcel.Visible = False
oBooks = oExcel.Workbooks
oBook = oBooks.Open(Dts.Variables("filePath").Value.ToString())
//Your macro here:
oExcel.Run("Yourmacro")

然后你可以为其他工作簿编写代码,以便在此之后你需要的任何自动化 - 例如您可以根据需要通过Excel自动化关闭工作簿并打开另一个工作簿。