You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在选中VSTO加载项功能区选项卡时加载OfficeJS任务窗格?

实现VSTO功能区选项卡选中时加载OfficeJS任务窗格的方法

核心思路

通过VSTO功能区的选项卡激活事件触发OfficeJS任务窗格的显示,依赖Office应用对象模型实现两者交互。


方案一:通过COMAddIns调用OfficeJS加载项激活接口

在VSTO功能区代码中监听选项卡的Activate事件,通过Office应用的COMAddIns集合定位目标OfficeJS加载项,调用激活方法显示任务窗格。

private void MyVstoTab_Activate(object sender, RibbonControlEventArgs e)
{
    var officeApp = Globals.ThisAddIn.Application;
    
    // 替换为你的OfficeJS加载项ID(可在加载项manifest.xml的<Id>节点获取)
    const string officeJsAddInId = "your-office-js-addin-guid-here";
    
    var targetAddIn = officeApp.COMAddIns.Item(officeJsAddInId);
    
    if (targetAddIn != null && targetAddIn.Connect)
    {
        // 激活任务窗格
        var extension = officeApp.GetExtension(targetAddIn.ProgId);
        extension.Activate(Office.MsoExtensionActivation.msoExtensionActivationTaskPane);
    }
}

方案二:通过WebView调用OfficeJS自定义函数

若OfficeJS加载项已包含任务窗格,可在VSTO中直接控制任务窗格可见性,并调用其内部函数触发显示。

  1. OfficeJS端注册显示函数
    在OfficeJS任务窗格脚本中添加可被外部调用的函数:
// 注册任务窗格显示函数
function showOfficeJSTaskPane() {
    Office.addin.showAsTaskpane();
}
  1. VSTO端触发调用
    在VSTO功能区激活事件中,定位对应任务窗格并调用脚本函数:
private void MyVstoTab_Activate(object sender, RibbonControlEventArgs e)
{
    var officeApp = Globals.ThisAddIn.Application;
    
    // 替换为你的OfficeJS任务窗格ID
    const string taskPaneId = "your-office-js-taskpane-id";
    
    var taskPane = officeApp.TaskPanes.Item(taskPaneId);
    if (taskPane != null)
    {
        // 设置任务窗格可见并调用显示函数
        taskPane.Visible = true;
        var webBrowser = taskPane.Control as WebBrowser;
        webBrowser?.InvokeScriptAsync("showOfficeJSTaskPane");
    }
}

注意事项

  • 确保OfficeJS加载项已正确安装并启用,VSTO才能定位到目标加载项/任务窗格
  • 加载项ID和任务窗格ID需与manifest.xml中的配置完全匹配
  • 不同Office应用(Word/Excel/PowerPoint)的对象模型略有差异,需根据实际场景调整代码
  • 部分Office版本需在信任中心启用“允许VSTO加载项使用COM互操作”权限

内容的提问来源于stack exchange,提问作者gpp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 08:10:16