使用外部c#控制台应用程序在Excel工作表中运行VBA宏

时间:2015-07-03 06:36:32

标签: c# excel excel-vba vba

我正在尝试调用Excel文件中的一个宏。 下面是我得到的代码,但是在下面运行会抛出异常,并显示以下信息。

代码:

// Define your Excel Objects
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkBook = null;

try
{
    //Start Excel and open the workbook.
    xlWorkBook = xlApp.Workbooks.Open(@"C:\MyFolder\Junk\macro\xxxxxReport.xlsm");

    //Run the macros by supplying the necessary arguments
    xlApp.Run("LookupHLink");

    //xlWorkBook.Save();
    //Clean-up: Close the workbook
    xlWorkBook.Close(false);

    //Quit the Excel Application
    xlApp.Quit();
}
catch (Exception ex)
{
}
finally
{
    //~~> Clean Up
    releaseObject(xlApp);
    releaseObject(xlWorkBook);
}

宏没有参数。

Public Sub LookupHLink()

错误讯息:

  

无法运行宏'LookupHLink'。宏可能在此工作簿中不可用,或者可能禁用所有宏。

如果我做错了,请告诉我。

1 个答案:

答案 0 :(得分:1)

据我所知,这个错误的可能原因是:

  • 系统找到该文件但无法加载。
  • 文件已加载但没有宏。
  • 文件已加载,但宏已禁用。
  • 文件已加载,宏存在...但您拼错了名称。

鉴于可用信息,似乎更可能的原因是禁用宏。

您可以尝试将文件移至受信任位置:

您可以通过点击文件>查看受信任的位置。选项然后 点击信任中心>信任中心设置>受信任的地点。

请参阅Change macro security settings in Excel [2010]。

您也可以尝试更改安全设置:

在Excel 2007中

  • 单击“Microsoft Office按钮”,然后单击“Excel选项”。
  • 点击信任中心。
  • 单击“信任中心设置”。
  • 单击“宏设置”。
  • 单击以选中“信任对VBA项目对象模型的访问权限”复选框。
  • 单击“确定”关闭“Excel选项”对话框。

来源:You may receive an run-time error when you programmatically allow access to a Visual Basic project in Excel 2003 and in Excel 2007 - at Microsoft Knowledge base

注意:C#中的可选参数是一个相对较新的功能...您可以尝试旧方法并使用Type.Missing来填充Run method的臭名昭着的30个参数。像这样:

xlApp.Run('macro', Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);