You may receive a "Member Not Found" error message when you use a For Each statement on an Excel collection in Visual Basic .NET or in Visual C# .NET
This article was previously published under Q328347
This article has been archived. It is offered "as is" and will no longer be updated.
When you use a Visual Basic .NET For Each..Next statement or a Visual C# .NET foreach statement to iterate an Excel collection, such as a Range or a Windows collection, you receive the following error message:
An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll Additional information: Member not found.
To resolve this problem, you can use a Visual Basic For...Next statement or a Visual C# for statement instead. The "More Information" section of this article provides an example.
Microsoft is researching this problem and will post more information in this article when the information becomes available.
Steps to reproduce the problem
- Start Microsoft Visual Studio .NET.
- On the File menu, click New and then click Project.
- Under Visual Basic Projects, click to select Windows Application.
By default, Form1 is created.
- Add a reference to the Microsoft Excel Object Library. You can do this by following these steps:
- On the Project menu, click Add Reference.
- On the COM tab, locate Microsoft Excel Object Library and then click Select.
Note Microsoft Office 2003 includes Primary Interop Assemblies (PIAs). Microsoft Office XP does not include PIAs, but they can be downloaded. For additional information about Office XP PIAs, click the following article number to view the article in the Microsoft Knowledge Base:328912 Microsoft Office XP primary interop assemblies (PIAs) are available for download
- Click OK in the Add References dialog box.
- On the View menu, click to select Toolbox and then add a button to Form1.
- Double-click Button1 to display the code window for Form1 and then add the following code to the Click event handler of the button:
Dim oApp As New Excel.Application()oApp.Visible = TrueoApp.UserControl = TrueDim oSheet As Excel.WorksheetoSheet = oApp.Workbooks.Add.Worksheets.Item(1)Dim oCell As Excel.RangeFor Each oCell In oSheet.Range("A1:B5") oCell.Value = "test"Next
- Add the following code to the top of the form module:
Imports Excel = Microsoft.Office.Interop.Excel
- Press F5 to run the program.
- As soon as Form1 loads, click Button1.
You receive the error message:Member not foundthat is described in the "Symptoms" section of this article.
WorkaroundTo work around the error, you can replace the code in the Click event handler of the button with the following code:
Then, run the program again. When you click Button1, cells A1:B5 in the new worksheet are populated with text as expected.
Dim oApp As New Excel.Application()oApp.Visible = TrueoApp.UserControl = TrueDim oSheet As Excel.WorksheetoSheet = oApp.Workbooks.Add.Worksheets.Item(1)Dim oRng As Excel.RangeDim nRows As Long, nCols As LongoRng = oSheet.Range("A1:B5")For nRows = 1 To oRng.Rows.Count For nCols = 1 To oRng.Columns.Count oRng.Cells(nRows, nCols).Value = "test" NextNext
Article ID: 328347 - Last Review: 12/07/2015 12:25:13 - Revision: 5.4
Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition
- kbnosurvey kbarchive kbpia kbautomation kbprb KB328347