Tag Archive for Excel

Excel 2010: Not enough system resources to display completely

excelicon

The Problem

When opening an Excel file or running calculations within an Excel file, you may get the following error

excel2010

This is a very miscellaneous error and one that is not easily solved sometimes but here are a few things to try

  1. If you have any COM add-ins installed, un-install them unless they are absolutely required or just untick them to test.  COM add-ins are a special type of add-in written in machine language. They are often installed without explicit approval.  COM add-ins are often reported as causing memory problems
  2. To see if you have multiple sessions open, press CTL-ALT-DELETE and check how any Excel applications are running.  There should be just one running. If a new Excel session opens each time you double click on a workbook, try unchecking the Excel Option “Ignore other applications” if it is checked on the Options General tab.
  3. Excel may think your worksheets are larger than you do.  This can consume a lot of memory. Normally your scroll area controlled by the scroll bars is very small.  However, sometimes Excel thinks there are cells well below your used range. One way is to check where Excel thinks the last cell is located.  Do this by pressing CTRL+SHIFT+END.  If it well below your used range, then select all “unused” columns in this range and delete them. Then select all unused rows in this range and delete them .  Then close and re-open Excel
  4. Install the latest upgrades to your version of Office.
  5. You can try deleting temp files. There is a nice piece of software called Temp File Deleter https://www.add-ins.com/temp_file_deleter.htm
  6. If you are using Google Desktop Search, un-install it.  Google Desktop Search appears to be a memory hog and has been reported to interfere with Microsoft Excel.  Specifically, it installs a COM add-in that monitors every action in Excel so that it can index it which can slow everything down
  7. If you are using Excel 2010-2013, click File, Options, Advanced, and go to the General section. Check if you have an alternate startup folder and check its content, and remove anything you do not need
  8. Check and see if you have an un-needed add-in or workbook in your XLSTART folder. This folder may vary location wise depending on local and roaming profiles
  9. Delete your XLB file. (Search for *.XLB) It can become corrupt but cause no visible problems. If corrupt it can consume lots of memory. Excel will recreate, but button customization will be lost.  This is a file where Excel stores its toolbar settings.   To delete it, use the XLB File Deleter which is a free product. There have been reports that doing this will solve problems.
  10. Your printer or its driver may be causing the problem.  HP printers have a history of causing a memory problem with Excel.  We do not know if HP fixed the problem and it may still be around or surfacing again.  Change your default printer if you have other printers available as a test
  11. Use of macros that do very extensive file creating, data manipulation, and graphing have been known to cause memory leak problems. Such macros are ones that typically run for 30 minutes or longer.
  12. If you have Track Changes turned on in Excel, turn off Track Changes as it uses a fair amount of memory.  The default is Off.
  13. Turn off AutoRecovery, as this takes up Excel memory.  However, have a backup if you do. To turn off AuoRecovery go to File,Options, Save. Uncheck Auto Recovery
  14. Problems in your application data folder for Excel can be the cause.  The folder is typically “c:\documents and settings\%username%\application data\microsoft\excel”.  This is a hidden folder, so set your Explorer options to show hidden folders. After backing up, rename or delete this folder and its subfolders.  Reboot the machine and open Excel.  Excel will recreate the folder and needed contents.
  15. Run the following 2 commands. “C:\Program Files\Microsoft Office\OFFICE11\excel.exe” /unregserver and “C:\Program Files\Microsoft Office\OFFICE11\excel.exe” /regserver. (Change the number 11 to 12 for Excel 2007, 14 for Excel 2010 and 15 for Excel 2013) These commands remove most of the Excel registry entries and then resets them.  However, they do leave some residual settings.
  16. A more extensive way to clean the registry is to rename the Excel registry key and let Excel recreate it. It depends on the version of Excel.  First, close Excel.  Then do Run, Regedit and go to the Excel registry key.  It will be “HKEY_CURRENT_USER\Software\Microsoft\Office\%version_number%\Excel”
    where %version_number% is 11 for Excel 2003, 12 for Excel 2007, 14 for Excel 2010 and 15 for Excel 2013. Rename this to OldExcel (this will back it up). Then re-open Excel.  Excel will rebuild the registry entry.  You will need to manually install any needed add-ins
  17. It may be the case that the Server or PC that Excel is running on needs more memory or that you need to close other running apps which may be interfering with Excel or taking up more memory that Excel needs
  18. Try opening Excel in Safe Mode. For example C:\Program Files\Microsoft Office\Office\Excel.exe /s
  19. Try opening Excel whilst holding the shift key down to stop any macros from executing or type Click Start, Run, “C:\Program Files\Microsoft Office\Office\Excel.exe” /Automation

 

 

Adding Excel 2010 Add-ins for all users on an RDS Farm

plus sign

The Requirements

To make 2 x Excel 2010 Add-ins load automatically whenever anyone logged into Excel 2010 on any RDS Server in the farm using their roaming profile

  • 4 x Windows 2008 R2 Remote Desktop Servers in an RDS Farm
  • 1 x Excel 2010 installed on each RDS Server
  • 2 x Excel 2010 Add-ins
  • Roaming Profiles
  • For testing purposes the D Drive was a trusted location in Excel (Via Group Policy)
  • For testing purposes, macros were enabled without prompting (Via Group Policy)

This was actually more complicated than it first looked. We found that on a per user basis when they manually add the add-ins through Excel then it retained the settings through the roaming profile no matter what server in the farm they were on which was great but we wanted to take the user aspect out of it

Adding Excel Add-ins (Unautomated)

  • Open Excel
  • Click File > Options > Add-ins

Excel Add-ins2

  • Click Go and you will see the default add-ins which come with Excel

Excel Add-ins3

  • Browse to your Add-ins and select them
  • They should then show up

Excel Add-ins5

  • If you have a look in the registry then you will see the add-ins under the following paths. Note the first Add-in is called OPEN, the second is called OPEN1 and so on
  • HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options\OPEN
  • HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options\OPEN1

Excel Add-ins1

What we tested to start with

We thought it might be worth a try putting the RDS Server into Install mode and installing the Add-ins

Excel Add-ins6

  • Open Excel > File > Options > Add-ins > Go Install the Add-ins under an Admin account and then close Excel
  • Come out of Install Mode

Excel Add-ins7

  • But this didn’t work for any new users logging into the server either. The Add-ins did not appear but apparently this did work for someone who posted in a forum
  • Next we had a look to see if we could use Group Policy. Note you have to download and install the relevant Microsoft Office Templates so you can see them in GPME. See below pic

Excel Add-ins8

  • But lo and behold there was not anything relating to Excel Add-ins or exactly what we needed. Apparently you are meant to be able to customise every aspect of Excel through GP but it sometime requires specialist knowledge and programming experience which we didn’t particularly want to get into.
  • Just as a note, we searched the web for a simple resolution to this and although you can find people with the same problem, we couldn’t find anyone who had this working
  • Next we will show you how we got this working via 3 methods. There may be other better solutions but these worked for us!

Working Solution 1 (Write a batch script containing reg syntax)

Bear in mind that this will be a brand new user logging into a server and opening Excel so we need to take into account that some of the necessary Office registry keys will not exist and we are using Office 2010.

The first thing we thought we could would be to write a short batch script which added the keys into the registry as per next 6 lines.

Note: If writing the below into Notepad then DO NOT USE WORD WRAP and note the “\” which enclose any path which has spaces

  • REG ADD HKEY_CURRENT_USER\Software\Microsoft\Office\ /f
  • REG ADD HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\ /f
  • REG ADD HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\ /f
  • REG ADD “HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\ \Options\ /f
  • REG ADD HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options\ /v OPEN /t REG_SZ /d “\”D:\Program Files (x86)\ibm\cognos\tm1\bin\tm1p.xla”\” /f
  • REG ADD HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options\ /v OPEN1 /t REG_SZ /d “\”D:\Program Files (x86)\ibm\cognos\tm1\bin\ManCalcv2.xlam”\” /f
  • Here is what it looks like

regadd script

  • You can the save this as a .bat file and load it into a Group Policy to run at Startup or User Logon

The Second solution (PowerShell Script)

I found this PowerShell Script which adds Excel Addins. Thanks to Jan Egil Ring

http://poshcode.org/1811

  • Copy the script into a notepad file
  • Change the name of your Add-in (Circled below)
  • Change the Path to your Add-in (Circled below)
  • Save script with a .ps1 suffix

PowerShellexcel

  • Next go to Group Policy
  • Create a new User Group Policy
  • Navigate to User Configuration > Windows Settings > Scripts (Logon/Logoff)

powershell02

  • Double click on Logon
  • Click on PowerShell Scripts

powershell03

  • Click Add

powershell04

  • Click Browse
  • From here, I click Add, and click Browse. The Add a Script dialog appears. The Browse button opens a Windows Explorer window that is centered on the SysVol share for the domain. I then dragged and dropped my tm1p.ps1 script into the Logon script folder (SysVol Share)

powershell05

  • You should then see your script as per below screenprint

powershell06

  • Click Apply and OK
  • Go to the scope of the Policy and make sure the users or groups are selected for the policy
  • Open cmd.exe and type gpupdate /force
  • Try logging on as a brand new user to the server and see if the script runs and adds your Excel Add-in

The third Solution (Creating a Macro enabled Excel Template)

Thanks to Nicholas Cohen for providing this information

  • Open Excel 2010 on one of your RDS Servers
  • Press ALT F11 to open Visual Basic for Applications
  • Right click on VBAProject (Book1) and select Insert > Module

Excel Add-ins9

  • You will then need to copy and paste the following code into the module box

Sub InstallAddIn(strFileName As String)
Dim AI As Excel.AddIn
Set AI = Application.AddIns.Add(Filename:=strFileName)
AI.Installed = True
End Sub

Sub Auto_Open()

‘replace stuff in quotes with the network path to the add-in
‘this path obviously must be accessible by the user
InstallAddIn (“D:\Program Files (x86)\ibm\cognos\tm1\bin\tm1p.xla”)
InstallAddIn (“D:\Program Files (x86)\ibm\cognos\tm1\bin\ManCalcv2.xlam”)

‘replace below code with the name of the macro that you want to run when it’s open. You need to know names of what’s inside the Add-in to put here which is why this is commented out as an example but it will run anyway with the below path
‘code/routines in add-in tm1p.xla
‘code/routines in add-in Mancalcv2.xlam
‘repeat ad-infinitum….

End Sub

  • It should look like the below

Excel

  • Now go back to Excel and do File > Save As >
  • Give it a name and save it as an Excel Macro-Enabled Template to the desktop or wherever convenient

Exceladdins21

  • Now the next task will be to put this Excel Template into the users roaming profile path under the XLSTART Folder which in most people’s case will be either of these 2 paths
  • \\server\Profiles\AppData\Roaming\Microsoft\Excel\XLSTART
  • \\server\Home\AppData\Roaming\Microsoft\Excel\XLSTART
  • Note: We redirect our users AppData folder to their home folder
  • This can then be scripted and put in a Group Policy

Exceladdins22

  • Next I’ll look at a script to do this but I haven’t got round to it yet as the PowerShell script seemed neater.

The Fourth Solution

This next solution was an added requirement to adding Excel Add-ins in a Terminal Server environment.

We had developers who logged into 2 different Terminal Server Farms and used different add-ins on each one. What we found is that the above scripts would sometimes overwrite existing add-ins when swapping from one farm to the next so we needed a script which checked if any of the Excel OPEN keys had values to start with, ignore them and add the Excel add-ins to the next available OPEN Key

Thanks very much to oBda of Experts Exchange for this script.

@echo off
setlocal enabledelayedexpansion
set AddinList[1]="D:\Program Files (x86)\ibm\cognos\tm1\bin\tm1p.xlam"
set AddinList[2]="D:\Program Files (x86)\ibm\cognos\tm1\bin\ManCalcv.xlam"
set Key=HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options
set Quiet=0
set LastIndex=10
for /f "tokens=1* delims==" %%a in ('set AddinList[') do (
	if %Quiet%==0 echo Processing '%%b'
	set Value=
	set FoundAt=
	set Data=%%b
	set CompareData=!Data:"=!
	for /l %%i in (0, 1, %LastIndex%) do (
		if %%i==0 (set TestValue=OPEN) else (set TestValue=OPEN%%i)
		reg.exe query "%Key%" /v "!TestValue!" >NUL 2>&1
		if errorlevel 1 (
			if "!Value!"=="" (
				if %Quiet%==0 echo !TestValue! ... free.
				set Value=!TestValue!
			)
		) else (
			if %Quiet%==0 echo !TestValue! ... already used.
			for /f "tokens=2*" %%o in ('reg.exe query "%Key%" /v "!TestValue!"') do set CompareDataExisting=%%p
			set CompareDataExisting=!CompareDataExisting:"=!
			if /i "!CompareData!"=="!CompareDataExisting!" set FoundAt=!TestValue!
		)
	)
	if "!Value!"=="" (
		echo ERROR: Unable to find an empty index in the range of 0..%LastIndex%
		goto :eof
	)
	if "!FoundAt!"=="" (
		reg.exe add "%Key%" /v "!Value!" /t REG_SZ /d "!Data:"=\"!" /f >NUL
		if errorlevel 1 (
			echo ERROR: Could not create value '!Value!' with data '!Data!' at '%Key%'
		) else (
			if %Quiet%==0 echo Value successfully added.
		)
	) else (
		if %Quiet%==0 echo Found data in '!FoundAt!', nothing added.
	)
)