1 Attachment(s)
Excel automation errors from C#
Hi guys,
This is my first post, and I'll try to make myself clear.
I'm trying to launch a macro from a c# program using the following code:
//////////////////
object oMissing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.ApplicationClass oExcel = null;
Microsoft.Office.Interop.Excel.Workbooks oBooks = null;
Microsoft.Office.Interop.Excel._Workbook oBook = null;
oExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
oExcel.Visible = true;
oBooks = oExcel.Workbooks;
oBook = oBooks.Open(path, false, false,
oMissing, oMissing, oMissing, oMissing, oMissing, oMissing,
oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
this.RunMacro(oExcel, new Object[] { "IPReviewPerformStep", stepIndex.ToString(), settings.SAPAPOUserName, settings.SAPAPOPassworde });
///////////////// Method to run a macro
private void RunMacro(object oApp, object[] oRunArgs)
{
oApp.GetType().InvokeMember("Run",
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.InvokeMethod,
null, oApp, oRunArgs);
}
////////////////////////
So far, I get the following behaviour: The excel file is opened successfully, the macro is launched, but I get automation errors on basic VBA objects like "Application" or "ThisWorkbook" (see error window in attachment).
However, when I launch the macro from the excel file manually, it works!
Moreover, I have a similar program launching a macro in another excel file and it works.
Is it possible that my excel file is corrupted?
If you have any idea, feel free to help! Thanks
Re: Excel automation errors from C#
Is it possible that my excel file was made in a too old version of excel? maybe excel 7.0
Still can't go any further in that project...
Re: Excel automation errors from C#
I found out that the max number of arguments when invoking the runmacro method is 10. If you try put more than 10 args, you'll get the same error as mine.