从ssis运行宏

时间:2017-10-10 15:41:58

标签: c# excel ssis sql-server-2016

我开发了一个运行Excel宏的SSIS包(VS2008,SQL Server 2008和Windows Server 2008,如果我没记错的话 - 服务器已经退役)。该程序包已使用SQL Server 2016和VS2015迁移到Azure。

我们现在在一年多以来第一次运行它并且它失败了。从SSIS运行宏的原始代码来自Run an Excel Macro from SSIS

代码:

using System;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop;
using Excel = Microsoft.Office.Interop.Excel;

public void Main()
{
    Excel.Application xlApp = new Excel.Application();
    Excel.Workbook xlWorkBook = xlApp.Workbooks.Open("C:\\ExcelDirectory\\DATA.xlsm"); // absolute path needed
    xlApp.Run("Formatting"); // method overloads allow you to send it parameters, etc.
    xlWorkBook.Close(true); // first parameter is SaveChanges
    xlApp.Quit();
}

Public void Main的第1行出错:

  

其他信息:由于以下错误,检索CLSID为{00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败:80040154未注册类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))。

尽管手动添加了Interop引用,因为来自MS的安装(exe)不能完成这项工作。也许.dll不好?请帮助并牢记我是这个领域的新手。

1 个答案:

答案 0 :(得分:0)

问题解决了!!问题是,正如其他人在其他帖子中所述,我需要安装Office。 Interop本身不会运行宏或与Office产品交互。