Hello,
I have been attempting for weeks to find a good way to bind my C# app to Excel and/or Access. Since my users may or may not have the target document open, I need a way to either bind to the running instance, or launch the correct document. I have chosen to use System.Runtime.InteropServices.Marshal.BindToMoniker. I have had a fair amount of success after much trial and error, but I am not running into an issue with opening multiple and unique documents. For example, if my user has three different entries in my app, each will be linked to its own excel doc. My "Open" routine loops through all entries, and launches, or binds to, the appropriate workbook. All three appear to be open, but only one shows in the taskbar, and the rest appear hidden. If I open the VBA editor I can see all three are open, and access the macros.

Code:
bool _AppOpen = false;
try
            {
                _Book = System.Runtime.InteropServices.Marshal.BindToMoniker(base.Pe.DestApp) as Excel.Workbook;
                _App = _Book.Parent;
                _App.Visible = true;
                _AppOpen = _App.Run("AppBind");
                if (_AppOpen) { base.Pe.AppStatus = AppStatus.AppTested; }
                else { base.Pe.AppStatus = AppStatus.AppOpen; }
                return true;
            }
            catch
            {
                Process[] proc = Process.GetProcessesByName("Excel");
                if (proc.Length < 1)
                   _App = new Excel.Application();
                else
                   _App = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application") as Excel.Application;
                   _Book = _App.Workbooks.Open(base.Pe.DestApp);
                   _App.Visible = true;
                   _AppOpen = _App.Run("AppBind");
                   return true;
            }
"AppBind" is a VBA function that returns True, to test that the workbook is, in fact, open. base.Pe.DestApp is the location and filename of the workbook. Hopefully I have explained enough to have this make sense.

Thanks in advance,
Brandon