在Excel COM插件中,我需要访问pageSetup属性。但是,如果excel中的编辑模式处于事件状态,则会出现异常。
我可以使用以下代码检查编辑模式是否处于事件状态:
CommandBarControl oNewMenu = excelApp.CommandBars["Worksheet Menu Bar"].FindControl(
1, //the type of item to look for
18, //the item to look for
refmissing, //the tag property (in this case missing)
refmissing, //the visible property (in this case missing)
true); //we want to look for it recursively so the last argument should be true.
if ( oNewMenu != null )
{
// edit mode = true
if (!oNewMenu.Enabled) {
}
}
我找到了退出编辑模式的一些解决方案,但是它们不起作用:
SendKeys.Flush();
excelApplication.SendKeys("{ENTER}");
如何退出编辑模式,以便可以编写pageSetup属性?
最佳答案
如果您使用的是外接程序,则可以尝试使用它退出编辑模式:
Globals.ThisAddIn.Application.SendKeys("{ENTER}");
我建议使用类似于此方法的方法来确定Excel是否处于“编辑模式”:
public static void VerifyExcelIsNotInCellEditMode()
{
if (Globals.ThisWorkbook.Application.Interactive)
{
try
{
//Will throw an error if user is editing cell
Globals.ThisWorkbook.Application.Interactive = false;
Globals.ThisWorkbook.Application.Interactive = true;
}
catch
{
throw new Exception("Excel is in Edit Mode.");
}
}
}
关于.net - Excel vsto结束编辑模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22148825/