📔 金山办公产品帮助中心

点击另存为没有响应

文档由 任财应 于 2022-09-27 22:41 创建,由 黄泺璇 于 2022-10-09 01:48 更新
文档标签:
文档分类:
95

如何确定和WPS加载项有关系

执行一下步骤,删掉加载项,然后打开本地文件尝试另存为。
以下操作,没有的可以忽略:
1、删除jsaddons目录中的publish.xml和jsplugins.xml文件
2、删除oem.ini中的JsApiPlugin=true和JSPluginsServer配置项
3、如果是国产机,那么使用quickstartoffice restart重启一下WPS

如果还能复现,则开发工具下面的com加载项,或者客户端自身的问题
如果不能复现,则为加载项问题。

问题原因:

OA在ribbon.xml中对FileSave,FileSaveAs和FileSaveAsMenu做了重写,这三个按钮上加了onAction。

解决方案

在onAction中新增或者修改FileSave,FileSaveAs和FileSaveAsMenu的case。

文字参考

case "FileSaveAsMenu": //通过idMso进行「另存为」功能的自定义
case "FileSaveAs":
    {
        if (pCheckIfOADoc()) { //文档来源是业务系统的,做自定义
            alert("这是OA文档,将Ctrl+S动作做了重定义,可以调用OA的保存文件流到业务系统的接口。")
            OnBtnSaveToServer();
        } else { //本地的文档,期望不做自定义,通过转调idMso的方法实现
            wps.WpsApplication().CommandBars.ExecuteMso("FileSaveAsWordDocx");
            //此处一定不能去调用与重写idMso相同的ID,否则就是个无线递归了,即在这个场景下不可调用FileSaveAs和FileSaveAsMenu这两个方法
        }
        break;
    }
case "FileSave": //通过idMso进行「保存」功能的自定义
    {
        if (pCheckIfOADoc()) { //文档来源是业务系统的,做自定义
            alert("这是OA文档,将Ctrl+S动作做了重定义,可以调用OA的保存文件流到业务系统的接口。")
            OnBtnSaveToServer();
        } else { //本地的文档,期望不做自定义,通过转调idMso的方法实现
            // wps.WpsApplication().CommandBars.ExecuteMso("FileSave");
          wps.Application.ActiveDocument.Save()
            //此处一定不能去调用与重写idMso相同的ID,否则就是个无限递归了,即在这个场景下不可调用FileSaveAs和FileSaveAsMenu这两个方法
        }
        break;
    }

表格参考:

case "FileSaveAs":
case "FileSaveAsMenu":
{
    if (pCheckIfOADoc()) { //文档来源是业务系统的,做自定义
        alert("这是OA文档,将Ctrl+S动作做了重定义,可以调用OA的保存文件流到业务系统的接口。")
        OnBtnSaveToServer();
    } else { //本地的文档,期望不做自定义,通过转调idMso的方法实现
        wps.WpsApplication().CommandBars.ExecuteMso("FileSaveAsExcelXlsx");
        //此处一定不能去调用与重写idMso相同的ID,否则就是个无限递归了,即在这个场景下不可调用FileSaveAs和FileSaveAsMenu这两个方法
    }
    break;
}
case "FileSave": //通过idMso进行「保存」功能的自定义
{
    if (pCheckIfOADoc()) { //文档来源是业务系统的,做自定义
        alert("这是OA文档,将Ctrl+S动作做了重定义,可以调用OA的保存文件流到业务系统的接口。")
        OnBtnSaveToServer();
    } else { //本地的文档,期望不做自定义,通过转调idMso的方法实现
        // wps.WpsApplication().CommandBars.ExecuteMso("FileSave");
        wps.Application.ActiveWorkbook.Save()
        //此处一定不能去调用与重写idMso相同的ID,否则就是个无限递归了,即在这个场景下不可调用FileSaveAs和FileSaveAsMenu这两个方法
    }
    break;
}