我开发了一个运行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不好?请帮助并牢记我是这个领域的新手。
答案 0 :(得分:0)
问题解决了!!问题是,正如其他人在其他帖子中所述,我需要安装Office。 Interop本身不会运行宏或与Office产品交互。