如何通过VSTO加载项运行Excel的菜单项?

时间:2018-12-23 20:09:04

标签: c# excel vsto

我正在开发Excel 2013 VSTO项目。我需要执行现有的菜单项(例如File-> Export操作)。

我该怎么办?我尝试搜索示例,但未找到任何示例。

1 个答案:

答案 0 :(得分:1)

这是工作表对象https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet.exportasfixedformat的ExportAsFixedFormat方法的VBA页面。从Excel对象模型可以调用各种各样的功能,并且该页面比互操作页面具有更多信息。

通常可以通过VSTO调用Excel对象模型:

//inside a function call from your VSTO project
Excel.Worksheet ws = Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1];
string exportMessage = await SaveASPDFAsync(ws, @"C:\Test\.test.pdf", false);
//more code - if empty string, it was a good export

方法可能看起来像这样:

private async Task<string> SaveASPDFAsync(Microsoft.Office.Interop.Excel.Worksheet ws, string filepath, bool openAfterPublish)
    {
        return await Task.Run(() =>
        {
            bool originalDisplayAlerts = ws.Application.DisplayAlerts;
            try {
                ws.Application.DisplayAlerts = false;
                ws.ExportAsFixedFormat(Type: Excel.XlFixedFormatType.xlTypePDF, Filename: filepath, OpenAfterPublish: openAfterPublish);
                ws.Application.DisplayAlerts = originalDisplayAlerts;
                return "";
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }
        });
    }