This article was previously published under Q328347
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 found
that is described in the "Symptoms" section of this article.
To work around the error, you can replace the code in the Click event handler of the button with the following code:
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
Then, run the program again. When you click Button1, cells A1:B5 in the new worksheet are populated with text as expected.