Kalint Posted September 28, 2012 Share Posted September 28, 2012 On my Form, this array is built then is sent to ThisAddin.cs var inserts = new List<string> {mFunction, mColor, Convert.ToString(mQty), mFauc, Convert.ToString(mPrice)};ThisAddIn.ExcelInsert(inserts.ToString());[/CODE] and here is where hell starts [CODE] public static void ExcelInsert(string mInsert) { try { // DOESNT WORK :( var range = this.Application.ActiveCell() as Excel.Range; range.Text.ToString(mInsert); } catch (Exception) { throw; }[/CODE] I know you can't use the first line in a static method, but honestly I cant wrap my head around an alternative. I just want it so that at active cell in Excel it inserts that array into the range. HAELP! Link to comment Share on other sites More sharing options...
0 Andre S. Veteran Posted September 28, 2012 Veteran Share Posted September 28, 2012 The ExcelInsert method could take the Excel.Range object as a parameter. The form has access to the Application object so it can get the ActiveCell() and pass it. Also ToString() is a method that returns a string representation of the object and never takes a parameter. I'm quite sure that's not how you set the value of cells. See http://msdn.microsoft.com/en-us/library/office/bb978779(v=office.12).aspx#DevGuideExcel2007RangeObject_InsertingValuesintoaRange By the way there are a few anti-patterns in this method: - Don't catch System.Exception - Don't use empty catch clauses that just rethrow the exception - that achieves nothing except resetting the stack trace, making debugging harder - Don't use "as" to cast if you're expecting the cast to always succeed - use a regular cast instead (i.e. (Excel.Range)Application.ActiveCell()) Link to comment Share on other sites More sharing options...
0 Kalint Posted September 28, 2012 Author Share Posted September 28, 2012 Yeah I know about the catch, I have Resharper and it adds that in automatically. Can you explain the Method a bit more? The form does have access to the application object but anything further I cannot access. Thanks! Link to comment Share on other sites More sharing options...
0 +Majesticmerc MVC Posted September 28, 2012 MVC Share Posted September 28, 2012 - Don't use "as" to cast if you're expecting the cast to always succeed - use a regular cast instead (i.e. (Excel.Range)Application.ActiveCell()) He doesn't need the cast at all, Application.ActiveCell returns Range. Link to comment Share on other sites More sharing options...
0 Andre S. Veteran Posted September 28, 2012 Veteran Share Posted September 28, 2012 Can you explain the Method a bit more? The form does have access to the application object but anything further I cannot access.I don't know how to put it more plainly, so here's some code:From the form: ThisAddIn.ExcelInsert(inserts.ToString(), Application);[/CODE] ExcelInsert becomes: [CODE]public static void ExcelInsert(string insert, Application application){ var range = application.ActiveCell; // do whatever you want with range}[/CODE] Link to comment Share on other sites More sharing options...
0 Kalint Posted September 28, 2012 Author Share Posted September 28, 2012 I don't know how to put it more plainly, so here's some code: From the form: ThisAddIn.ExcelInsert(inserts.ToString(), Application);[/CODE] ExcelInsert becomes: [CODE]public static void ExcelInsert(string insert, Application application){ var range = application.ActiveCell; // do whatever you want with range}[/CODE] Okay so the ExcelInsert works (thanks for clearing that up). But now it says Interface not valid at this point on the form. Link to comment Share on other sites More sharing options...
Question
Kalint
On my Form, this array is built then is sent to ThisAddin.cs
and here is where hell starts
public static void ExcelInsert(string mInsert)
{
try
{
// DOESNT WORK :(
var range = this.Application.ActiveCell() as Excel.Range;
range.Text.ToString(mInsert);
}
catch (Exception)
{
throw;
}
[/CODE]
I know you can't use the first line in a static method, but honestly I cant wrap my head around an alternative.
I just want it so that at active cell in Excel it inserts that array into the range.
HAELP!
Link to comment
Share on other sites
5 answers to this question
Recommended Posts