最近我重裝了系統(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文件就不會再出現雙擊打不開的問題了。