попробовал по разному опеределять переменную, передавать пустой,
ошибка врмени исполнения CLR, все таже, Неправильный тип аргумента.
для полноты картины приведу больше кода.
X++:
Microsoft.Office.Interop.Excel.Range myRange;
Microsoft.Office.Interop.Excel.ApplicationClass excelApp;
Microsoft.Office.Interop.Excel.Workbooks excelWbs;
Microsoft.Office.Interop.Excel.Worksheets excelWorksheets;
Microsoft.Office.Interop.Excel.WorksheetClass excelWorksheet;
Microsoft.Office.Interop.Excel.Range excelRange;
Microsoft.Office.Interop.Excel.Range excelCells;
COM rSet,fld,flds;
System.Object d; // или Object
System.Type type;
System.Object missing;
System.Reflection.FieldInfo inforef;
type = System.Type::GetType("System.Reflection.Missing");
inforef = type.GetField("Value");
missing = inforef.GetValue(Null);
rSet = new COM('ADODB.Recordset');
flds = rSet.Fields();
flds.Append("N1" , this.adoTypeToExcel('str' ));
flds.Append("N2" , this.adoTypeToExcel('str' ));
rSet.Open();
rSet.AddNew();
fld = flds.Item("N1" ); fld.Value("a");
fld = flds.Item("N2" ); fld.Value("b");
rSet.Update();
fname = "имя файла";
excelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
excelWbs = excelApp.get_Workbooks();
excelWb = excelWbs._Open(fileName,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);
excelWorksheets = excelWb.get_Worksheets();//excelApp.get_ActiveSheet();
excelWorksheet = excelWorksheets.get_Item(1);
excelCells = excelWorksheet.get_Cells();
myRange = excelCells.get_Range("A1",missing);
d = rSet;
myRange.CopyFromRecordset(d, missing,missing); //здесь выскакивает ошибка