When you are developing custom forms for Outlook or when you are a user within a company that has its own custom forms, you’ve probably ran into the error “Outlook cannot open this form…” message on some occasions.
In that case, you’re only solutions it to clear the Forms Cache and try again.
Unfortunately, clearing the Forms Cache is quite a longwinded process. Especially when you are a Custom Forms developer, you’ll probably find yourself clearing the Forms Cache on a regular basis and find it quite time consuming.
The script in this article can be used to quickly delete the Forms Cache.
- Built in method to clear the Forms Cache
- Scripted method to clear the Forms Cache
- VBS Code for reference
Built in method to clear the Forms Cache
Before showing the scripted way to clear the Forms Cache, below are the instructions to clear the Forms Cache via the built in methods:
- The short way can only be used when you are using Outlook 2007 or previous and have Owner permissions for the folder or are working with a pst-file:
Right-click the folder with the issues-> Properties-> tab Forms-> button Manage…-> button Clear Cache - The long way must be used when you for instance only have “Read” permissions on a Public Folder or in any case when using Outlook 2010 or Outlook 2013:
- Outlook 2007 and previous:
Tools-> Options-> tab Other-> button: Advanced Options…-> button: Custom Forms…-> button: Manage Forms…-> button: Clear Cache - Outlook 2010 and Outlook 2013
File-> Options-> Advanced-> button: Custom Forms…-> button: Manage Forms…-> button: Clear Cache
- Outlook 2007 and previous:
Scripted method to clear the Forms Cache
The download below contains a vbs-file called clearformscache.vbs
to quickly clear Outlook’s Forms Cache. The script can be used “as is” and doesn’t require any additional configuration.
This scripted method requests you to close Outlook and once closed, it locates your Forms Cache folder and then deletes it.
Download: clearformscache.zip
VBS Code for reference
The following code is contained within the zip-file referenced in the section above. You can use the code below for review or copy it to create your own vbs-file.
'==================================================================== 'Description: VBS script to clear Outlook's Forms Cache. ' author : Robert Sparnaaij ' version: 2.0 ' website: https://www.howto-outlook.com/downloads/clearformscache.htm '==================================================================== 'Close Outlook socially WScript.Echo "Close Outlook and press OK." 'Set WMI Service strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 'Close Outlook forcefully if it is still running Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process Where Name = 'outlook.exe'") For Each objProcess in colProcessList objProcess.Terminate() Next 'Get OS version Set colOperatingSystems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem") For Each objOperatingSystem in colOperatingSystems VersionOS = objOperatingSystem.Version Next 'Get major OS Kernel number sOSKernelMajor = Left(VersionOS,(InStr(VersionOS,".")-1)) 'Set Shell Set oShell = CreateObject("WScript.Shell") 'Determine Forms Cache path If sOSKernelMajor > 5 Then sFormsCachePath = oShell.ExpandEnvironmentStrings("%LocalAppData%") _ & "\Microsoft\Forms" Else sFormsCachePath = oShell.ExpandEnvironmentStrings("%UserProfile%") _ & "\Local Settings\Application Data\Microsoft\Forms" End If 'Verify whether the Forms Cache exists and delete it Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists(sFormsCachePath) Then WScript.Echo "The Forms Cache has been found and will be cleared." Const DeleteReadOnly = True objFSO.DeleteFolder(sFormsCachePath), DeleteReadOnly WScript.Echo "The Forms Cache has been cleared successfully. " _ & VbNewLine & "Start Outlook and check whether the form works now." Else WScript.Echo "Cannot find the Forms Cache. It has been cleared already. " _ & VbNewLine & "Start Outlook and check whether the form works now." End If