Symptoms
When you use a Visual Basic application to create an OLE Automation objectusing Microsoft Excel, you may receive the following error message when youattempt to access the object:
OLE Automation error
Resolution
This problem occurs when you access a Microsoft Excel OLE Automation objectin a Visual Basic procedure while Microsoft Excel is closed. If, forexample, you create a reference for a worksheet object using theCreateObject function, and you create a reference for another MicrosoftExcel object using the GetObject function in your procedure, if you thenset the Microsoft Excel worksheet object (Excel.Sheet) equal to nothing,you receive the OLE Automation error message if you then try to access theother object.
This problem occurs because setting a Microsoft Excel object that wascreated using the CreateObject function equal to Nothing closes MicrosoftExcel, even if your Visual Basic procedure still has a reference to anotherMicrosoft Excel object.
For example, you receive this error message when you run the following codein Microsoft Visual Basic:
Dim xlSheet As ObjectDim xlApp As ObjectSet xlSheet = CreateObject(“Excel.Sheet”)MsgBox xlSheet.Application.NameSet xlApp = GetObject(, “Excel.Application”)MsgBox xlApp.NameSet xlSheet = NothingMsgBox xlApp.Name You receive this error message because the statement “Set xlSheet =Nothing” closes Microsoft Excel, and the “MsgBox xlApp.Name” statement thatfollows in the procedure attempts to access the Microsoft Excel applicationobject again.
Note that in the above example, if you set the Microsoft Excel applicationobject equal to nothing (Set xlApp = Nothing), you do not receive an errormessage if you then access the Microsoft Excel worksheet object (xlSheet)in the procedure. Additionally, you do not receive this error message ifMicrosoft Excel is running when you run this macro because, in this case,the CreateObject function starts another instance of Microsoft Excel.