Problem
I have an application that generates financial reports in excel. After installing Office 2013, if a user opens excel while the application is running, the application returns a error: System.Runtime.InteropServices.COMException with HRESULT: 0x800AC472 which interrupts the data from being written to the spreadsheet.
After some research according to Microsoft this was done by design, the error 0x800AC472 – VBA_E_IGNORE, is thrown because Excel is busy and will not service any Object Model calls… this is a link to the discussion
Solution
You need to catch the error and retry. Not the most elegant solution, but it works. This code is VB .Net – if you need a C# version, please let me know and I will add it.
Public Function SetText(ByRef oSheet As _Worksheet, myRange as string, pText As String, Optional ByVal fname As String = "Arial", Optional ByVal fsize As Int16 = 12, Optional ByVal bBold As Boolean = False, Optional ByVal bItalics As Boolean = False, Optional ByVal wrapText As Boolean = False ) As Boolean Dim retry as Boolean = true While retry Try With oSheet.Range(myRange) .Value = pText .Font.Name = fname .Font.Size = CLng(fsize) .Font.Bold = CBool(bBold) .Font.Italic = CBool(bItalics) .WrapText = wrapText end with retry = False Catch ex As Exception retry = ex.Message.Contains("0x800AC472") End Try End While return true End Function