Microsoft KB Archive/328347

= You may receive a &quot;Member Not Found&quot; error message when you use a For Each statement on an Excel collection in Visual Basic .NET or in Visual C# .NET =

Article ID: 328347

Article Last Modified on 8/27/2004

-

APPLIES TO


 * 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

-



This article was previously published under Q328347



SYMPTOMS
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.



RESOLUTION
To resolve this problem, you can use a Visual Basic For...Next statement or a Visual C# for statement instead. The &quot;More Information&quot; section of this article provides an example.



STATUS
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

</li> Click OK in the Add References dialog box.</li></ol> </li> On the View menu, click to select Toolbox and then add a button to Form1.</li>  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 = True oApp.UserControl = True

Dim oSheet As Excel.Worksheet oSheet = oApp.Workbooks.Add.Worksheets.Item(1)

Dim oCell As Excel.Range For Each oCell In oSheet.Range(&quot;A1:B5&quot;) oCell.Value = &quot;test&quot; Next </li>  Add the following code to the top of the form module: Imports Excel = Microsoft.Office.Interop.Excel </li> Press F5 to run the program.</li> As soon as Form1 loads, click Button1.

You receive the error message:

Member not found

that is described in the &quot;Symptoms&quot; section of this article.</li></ol>

Workaround
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 = True oApp.UserControl = True

Dim oSheet As Excel.Worksheet oSheet = oApp.Workbooks.Add.Worksheets.Item(1)

Dim oRng As Excel.Range Dim nRows As Long, nCols As Long oRng = oSheet.Range(&quot;A1:B5&quot;) For nRows = 1 To oRng.Rows.Count For nCols = 1 To oRng.Columns.Count oRng.Cells(nRows, nCols).Value = &quot;test&quot; Next Next Then, run the program again. When you click Button1, cells A1:B5 in the new worksheet are populated with text as expected.

Additional query words: xl2003 xl2002

Keywords: kbautomation kbprb kbpia KB328347

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.