最近我重装了系统(Win10+Office2016),然后发现了一个奇怪的bug:双击xlsx文件,只能打开Excel窗口,但是打不开这个文件,有时候再次双击就能打开了,但有时再次双击也不管用,需要在Excel的菜单中点“打开”,然后找到这个xlsx文件才能打开。其他常用的几种格式如xls、csv等也是这种情况。
为了解决这个问题,我在网上搜了一通解决方案,有的说取消勾选“忽略使用动态数据交换(DDE)的其他应用程序”,我试了之后发现这个方法并没有作用。
也有说修改注册表的,我试了之后发现这个方法还是挺管用的,具体方法如下:
1、按Win+R打开运行窗口,输入regedit并回车,打开注册表编辑器;
3、找到HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command项;
4、双击“默认”项,打开数据后,将最后的/DDE改为"%1"(包含引号),
如原数据为:
"C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE" /dde
这里就要修改为:
"C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE" "%1"
退出注册表编辑器,再次尝试双击打开,可以发现双击打开已经恢复正常了。
类似的,如果要修复xls文件的打开问题,就要修改HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\command项;要修改csv文件的打开问题,则需要修改HKEY_CLASSES_ROOT\ Excel.CSV \shell\Open\command项。
但是这个方法还有一个弊端,那就是系统重启后,注册表会被改回原值,导致bug再次出现,又要重新改一次注册表,很麻烦。为了做到能够一劳永逸,需要对这个方法做一下改进,大体的思路就是每次系统重启时自动修改注册表。具体做法如下:
1、打开记事本,粘贴下面的内容,另存为excel.reg文件,放到C:\下(其他目录也行,但是下面的步骤要注意保持一致)。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\command]
@="\"C:\\Program Files\\Microsoft Office\\Root\\Office16\\EXCEL.EXE\" \"%1\""
[HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command]
@="\"C:\\Program Files\\Microsoft Office\\Root\\Office16\\EXCEL.EXE\" \"%1\""
[HKEY_CLASSES_ROOT\Excel.CSV\shell\Open\command]
@="\"C:\\Program Files\\Microsoft Office\\Root\\Office16\\EXCEL.EXE\" \"%1\""
这段代码的意思就是将xls、xlsx、csv文件注册表数据后面的/dde全部修改成%1。
现在我们得到了一个excel.reg文件,双击运行即可导入进注册表了,但是直接双击运行的话会弹出窗口提示,这里我希望能够做到静默运行,所以还需要借助一个批处理程序。
2、再次打开记事本,输入regedit /s "C:\excel.reg"(注意引号),然后另存为excel.bat文件,放在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp文件夹下面。
这样,每次系统重启,就会自动运行C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp文件夹下的excel.bat,然后把excel.reg里面的数据导入注册表,这样excel文件就不会再出现双击打不开的问题了。