【问题标题】:Automate process by running excel VBA macro in SSIS通过在 SSIS 中运行 excel VBA 宏来自动化流程
【发布时间】:2014-09-27 09:44:12
【问题描述】:
最近,我有一个项目需要通过将 SSIS 包和 excel VBA 宏合二为一来自动化流程。步骤如下:
我有一个 SSIS 包,将所有视图结果从 sql server 导出到多个单独的文件到 excel。所有文件都保存在同一位置。
我有一个 excel VBA 宏执行清理以删除每个导出的 excel 文件中的所有空工作表。
我还有一个 excel VBA 宏执行合并任务,将所有 excel 文件合并到主 excel 文件中。此主 excel 文件包含所有结果集,并且每个结果集相应地保存在不同的选项卡上。
由于我手动运行第 2 步和第 3 步,所以我的问题是如何将第 2 步和第 3 步与第 1 步连接起来,以将它们组合为一个自动化流程。
请告诉我实现这一目标的可能性有多大!非常感谢。
【问题讨论】:
标签:
sql
excel
vba
ssis
etl
【解决方案1】:
执行此操作的方法是在您的 SSIS 包中创建一个脚本任务。
然后,一旦进入脚本任务,您就可以通过脚本任务的 C# 代码调用 Excel 互操作。例如您可以添加对 Microsoft.Office.Interop 的引用。在脚本任务的 C# 代码中使用该库后,您可以添加一些将调用宏的代码。例如
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 自动化关闭工作簿并打开另一个工作簿。