情况说明:有一大批电脑安装了WPS 11.8.2.X 版本,大部分用户在桌面 - 右键 - 新建 - Word / Excel等WPS关联文档,打开后保存时会弹出兼容性警告,如下图。
WPS 表格
您保存的文件格式可能包含有不兼容的功能。是否保持工作簿的这种格式?
·如要保持这种格式,去掉所有不兼容的功能,请单击“是”
·如要保留这些功能,请单击“否”。然后再用最新的 WPS表格 格式保存一份副本。
图片引用自百度。
解决过程:
由于是大批量电脑出现该问题,因此我是编写了批处理脚本来修复的。
普通用户可以按顺序往下看,专业人员可以跳过第一步(因为你很大概率已经会这个操作)。
(1)WPS本身设置
点击左上角的WPS文字,右上角找到小齿轮图标 - 配置与修复工具 - 高级 - 兼容设置,可以通过WPS的配置工具重新关联
(2)问题分析和脚本编写
在WPS界面按F12,查看实际的文件格式是不是txt,如果是的话,很大可能是注册表出现了问题。
第一步,win+r运行regedit,进入注册表编辑器,路径:HKEY_CLASSES_ROOT\.doc\Word.Document.8\ShellNew
查看项值,一般是:
C:\Program Files (x86)\Kingsoft\WPS Office\%WPSVERSION%\office6\mui\zh_CN\templates\newfile.doc
这个注册表项的作用是将右键新建的文件类型与安装的WPS的新建文档模板进行关联。
我通过检查这个路径“C:\Program Files (x86)\Kingsoft\WPS Office\”里面的文件夹,发现现行安装的WPS版本号,和注册表项中的%WPSVERSION%版本号不一致。
那么可以尝试从这个方向进行修复,编写批处理脚本
第一行的X替换为你当前的WPS版本号
set "version=11.8.2.X"
set /p "user_confirm=是否使用预设版本号 %version%? (Y/N): "
if /i "%user_confirm%"=="N" (
set /p "version=请输入自定义的版本号: "
)
reg delete "HKEY_CLASSES_ROOT\.doc\Word.Document.8\ShellNew" /f
reg delete "HKEY_CLASSES_ROOT\.docx\Word.Document.12\ShellNew" /f
reg delete "HKEY_CLASSES_ROOT\.xls\Excel.Sheet.8\ShellNew" /f
reg delete "HKEY_CLASSES_ROOT\.xlsx\Excel.Sheet.12\ShellNew" /f
reg add "HKEY_CLASSES_ROOT\.doc\Word.Document.8\ShellNew" /v "FileName" /t REG_SZ /d "C:\Program Files (x86)\Kingsoft\WPS Office\%version%\office6\mui\zh_CN\templates\newfile.doc" /f
reg add "HKEY_CLASSES_ROOT\.docx\Word.Document.12\ShellNew" /v "NullFile" /t REG_SZ /d "" /f
reg add "HKEY_CLASSES_ROOT\.xls\Excel.Sheet.8\ShellNew" /v "FileName" /t REG_SZ /d "C:\Program Files (x86)\Kingsoft\WPS Office\%version%\office6\mui\zh_CN\templates\newfile.xls" /f
reg add "HKEY_CLASSES_ROOT\.xlsx\Excel.Sheet.12\ShellNew" /v "FileName" /t REG_SZ /d "C:\Program Files (x86)\Kingsoft\WPS Office\%version%\office6\mui\zh_CN\templates\newfile.xlsx" /f
以管理员身份运行,新建文档进行测试,问题解决。
后续准备写一个能够自动识别当前版本号的脚本,不再需要进行预设或手动输入,目前已查询到WPS的版本号存储在注册表路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Kingsoft Office\DisplayVersion
可以通过批处理脚本先获取里面的字段值,再设为变量,再对注册表修复。
我想很奇怪的是,为什么WPS安装的时候居然不会对他关联的注册表项进行检查和修复?因为我无论是直接覆盖安装和卸载重装,如果注册表本身有问题的话,进行升级安装问题仍然会遗留。