Microsoft 12/9/2014 Update Breaks ActiveX Controls Fix
If some of your interactive, macro-enabled Excel files suddenly started crashing for no reason after you've installed some Microsoft updates released on 12/9/2014, this Excel tool could fix the problem. If you're running Excel 2013 and the tool fails to fix the problem, please see the Office 2013 Fix below.
The Issue and Fix
On 12/9/14 Microsoft released some Windows and Office updates. One of the updates (I haven't been able to pinpoint the culprit yet) broke the ActiveX controls in Excel - those text boxes, buttons, combo boxes, and other controls that make your spreadsheets interactive. '438' run-time errors start cropping up in spreadsheets that use to work before.
Or when you try inserting one of these ActiveX controls , you get a "Cannot insert object" error.
If you're getting these error messages recently (the date I wrote this is 12/12/2014), then it's likely that you've been affected by the Microsoft updates. According to the information posted on stackoverflow.com and excelmatters.com, you can try deleting the MSForms.exd files just once in the temporary folders when Excel is closed, and the issue most likely will go away.
The MSForms.exd files are in a hidden folder, and locating them could be tricky for some users. So I created this tool that would automatically rename the MSForms.exd files in the hidden folders, which also can fix the issue. Automatically deleting the MSForms.exd files was not possible because that required Excel to be closed; however, automatically renaming them can achieve the same effect. Download the tool at the beginning of this page, click on the Fix ActiveX Controls button, and restart Excel. The issue should be fixed, and your spreadsheets should work again.
Office 2013 Fix
If you're running Excel 2013 and removing the MSForms.exd files did not resolve the issue, try removing the offending Office update KB2726958.
Control Panel > Programs > Under Programs and Features: View installed updates > Select the Update KB2726958 for Office 2013 > Uninstall
If you were not able to locate the offending update KB2726958, you can try reverting the current version of Office 2013 to the version right before the update by following these instructions from Microsoft. Based on the instructions, I created a script to simplify the process of launching the repair program that reverts Office 2013 to version 15.0.4667.1002, the November 2014 version (list of all versions).
- Download the Repair_Office_2013_to_15.0.4667.1002.zip script, unzip it, and run it. The script will launch the Office 2013 repair program.
You may get a warning from the browser when downloading the script. You can create the same script by copying and pasting the code below into a text file, and then saving the text file with a .bat extension.@echo off
IF EXIST "%programfiles%\Microsoft Office 15\ClientX86\officec2rclient.exe" (
"%programfiles%\Microsoft Office 15\ClientX86\officec2rclient.exe" /update user updatetoversion=15.0.4667.1002
IF EXIST "%programfiles%\Microsoft Office 15\ClientX86\integratedoffice.exe" (
"%programfiles%\Microsoft Office 15\ClientX86\integratedoffice.exe" REPAIRUI RERUNMODE version=15.0.4667.1002
IF EXIST "%programfiles%\Microsoft Office 15\ClientX64\officec2rclient.exe" (
"%programfiles%\Microsoft Office 15\ClientX64\officec2rclient.exe" /update user updatetoversion=15.0.4667.1002
IF EXIST "%programfiles%\Microsoft Office 15\ClientX64\integratedoffice.exe" (
"%programfiles%\Microsoft Office 15\ClientX64\integratedoffice.exe" REPAIRUI RERUNMODE version=15.0.4667.1002
- When the repair dialog box appears, click Online Repair. Then click Repair and then Repair again.
- Temporarily disable Office automatic updates until Microsoft addresses this problem.
Start Excel > File > Account > Under Production Information: Update Options and then Disable Updates
- Create a reminder to re-enable Office 2013 automatic updates.
Imperfect Solution For Developers: VBA Code
If you're a developer who simply cannot reach into all your clients' computers, you can insert the following VBA code into the spreadsheet you're working on or distributing. The VBA code is essentially the code behind the tool I created that attempts to rename the MSForms.exd files. Add the VBA code to your spreadsheets, and your spreadsheets will be "immune" to the Microsoft Updates.
Copy and paste the following VBA code into any module in the spreadsheet.
Const tempFileName As String = "MSForms - Copy.exd"
Const msFormsFileName As String = "MSForms.exd"
On Error Resume Next
'Try to rename the C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\MSForms.exd file
RenameFile Environ("TEMP") & "\Excel8.0\" & msFormsFileName, Environ("TEMP") & "\Excel8.0\" & tempFileName
'Try to rename the C:\Users\[user.name]\AppData\Local\Temp\VBE\MSForms.exd file
RenameFile Environ("TEMP") & "\VBE\" & msFormsFileName, Environ("TEMP") & "\VBE\" & tempFileName
Private Sub RenameFile(fromFilePath As String, toFilePath As String)
If CheckFileExist(fromFilePath) Then
Name fromFilePath As toFilePath
Private Function CheckFileExist(path As String) As Boolean
CheckFileExist = (Dir(path) <> "")
Private Sub DeleteFile(path As String)
If CheckFileExist(path) Then
SetAttr path, vbNormal
Call the RenameMSFormsFiles subroutine at the very beginning of the Workbook_Open event.
The spreadsheet will try to rename the MSForms.exd files when it opens. Obviously, this is not a perfect fix:
1. The affected user will still experience ActiveX control errors when running the VBA code the very first time opening the spreadsheet. Only after executing the VBA code once and restarting Excel, the issue is fixed. Normally when a user encounters a broken spreadsheet, the knee-jerk reaction is to close Excel and try to open the spreadsheet again. :)
2. The MSForms.exd files are renamed every time the spreadsheet opens, even when there's no problem with the MSForms.exd files. But the spreadsheet will work just fine regardless whether the machine running the spreadsheet has applied the Microsoft update or not.
At least for now, developers can continue to distribute their work with this workaround until Microsoft releases a fix.
Hopefully the solution has saved you hours of frantic searching on the web. If this solution was able to help you resolve the issue, let me know which versions of Windows and Excel you're running so I can update the information on this page. I simply haven't had the chance to test the solution on all combinations of Windows and Excel. And if you have a more elegant VBA solution, please share!