以编程方式在C#中启用Excel宏 [英] Programmatically enable Excel macro in C#
本文介绍了以编程方式在C#中启用Excel宏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个Excel加载项,我想执行以下操作:
I have an Excel add-in, and I would like to do the following:
- 检查工作簿是否具有宏.
- 提示用户是否要启用该宏.
- 如果是,请为用户启用宏.
是否可以在C#中启用宏?
Is there a way to enable a macro in C#?
推荐答案
根据文章,我将其实现为WinForm应用程序,因此我使用MessageBox
提示用户是否要启用宏.
According to the article, I implemented this as a WinForm application so I used MessageBox
to prompt user if he wants to enable the macro.
在执行此操作之前,您必须在"xlsm"工作簿的[文件]-> [选项]-> [信任中心]中检查对VBA项目对象模型的信任访问".
Before doing this, you have to check "Trust access to the VBA project object model" at [File]->[Options]->[Trust Center] in your "xlsm" workbook.
using VBA = Microsoft.Vbe.Interop;
using Excel = Microsoft.Office.Interop.Excel;
private void ReadExcel()
{
string filePath = @"C:\temp\Macro.xlsm";
Microsoft.Office.Interop.Excel.Application appExcel = null;
Microsoft.Office.Interop.Excel.Workbooks workbooks = null;
Microsoft.Office.Interop.Excel.Workbook workbook = null;
object oMiss = System.Reflection.Missing.Value;
appExcel = new Microsoft.Office.Interop.Excel.Application();
appExcel.DisplayAlerts = true;
appExcel.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityByUI;
// Make the excel visible
appExcel.Visible = true;
workbooks = appExcel.Workbooks;
workbook = workbooks.Open(filePath, oMiss,
oMiss, oMiss,
oMiss, oMiss,
oMiss, oMiss,
oMiss, oMiss,
oMiss, oMiss,
oMiss, oMiss,
oMiss);
if (workbook.HasVBProject) // Has macros
{
try
{
// Show "Microsoft Excel Security Notice" prompt
var project = workbook.VBProject;
}
catch (System.Runtime.InteropServices.COMException comex)
{
// Macro is enabled.
}
}
workbook.Close(true, oMiss, oMiss);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
workbook = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
workbooks = null;
appExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(appExcel);
appExcel = null;
}
这篇关于以编程方式在C#中启用Excel宏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文