If the instance of Excel is running on the same machine as your C# app then you can use the following to get that instance. I use it in order to grab a user's running instance of Excel in order to read data from their open spreadsheet.
private Excel.Application GetCurrentVersionOfExcel()
{
Excel.Application xlApp;
// Try to get the currently-running Excel application
try
{
xlApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
}
catch
{
// In case there isn't a version running or the current version hasn't registered itself with the Running Object Table
xlApp = null;
}
return xlApp;
}
If that doesn't quite get you there I also have code to go through all open workbook processes and find the one you're looking for. It's quite long so if it's something you think might work for you then let me know and I'll post it. Basically it works by grabbing window handles and checking the child windows to see if they're workbooks.