sql - 通过在 SSIS 中运行 excel VBA 宏来自动化流程

标签 sql excel vba ssis etl

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

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

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

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

由于我手动运行第 2 步和第 3 步,所以我的问题是如何将第 2 步和第 3 步与第 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 自动化关闭工作簿并打开另一个工作簿。

关于sql - 通过在 SSIS 中运行 excel VBA 宏来自动化流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25126793/

相关文章:

excel - 如何使excel vba代码完全合格/如何规避运行时错误?

arrays - Excel 2007 VBA 数组大小限制

excel - 在 VBA 中使用 xmlHttp 建立 API session

vba - 如果 Range ("M7:Q500") 或 ("C7:C500") Excel VBA 中发生任何更改,则突出显示整行

SQL Server 2000 - 跳出循环

mysql - 选择具有重复项的列中的前 5 个

sql - 如何在 Hive 查询中回顾 7 天

sql - JOIN 和 UNION 有什么区别?

web-services - 在 Excel 中使用 Web 服务并部署为一个文件

VBA 重置所有复选框、组合框、文本框和数据验证下拉列表