Как запустить код Excel VBA из службы Windows

Я хочу запустить код Excel VBA из моей службы Windows. Служба использует fileSystemWatcher для мониторинга каталога для добавления XML-файла. После добавления файла его содержимое десериализуется в свойствах объекта. На этом этапе я хочу открыть файл Excel и передать эти значения в определенные ячейки и запустить код VBA из этой рабочей книги. У меня это отлично работает из приложения Windows Forms, но я не могу заставить его работать из моего приложения службы Windows. Я приложил к приложению отладчик, чтобы попытаться увидеть, что происходит, но ошибок не было, и все шаги были успешно выполнены. Я знаю, что служба Windows не поддерживает открытие файлов MS Office, поскольку существуют проблемы с взаимодействием с пользовательским интерфейсом и имеющимися у него разрешениями пользователя. Но я ищу способ обойти любой способ запустить этот код VBA из службы. Я использую Windows 7 Home Premium 32 bit, и моя учетная запись для моей службы установлена на LocalSystem. Это код, который я использую:

    private void FSWatcherTest_Created(object sender, System.IO.FileSystemEventArgs e)
    {
            Trade t;
            XmlSerializer serializer;
            XmlReader reader;
            XmlWriter writer;

            string filePath = @"C:\Inbox\TradeInfo.xml";


            serializer = new XmlSerializer(typeof(Trade));
            reader = XmlReader.Create(filePath);
            t = (Trade)serializer.Deserialize(reader);
            reader.Close();



            string path=@"C:\Windows\System32\config\systemprofile\Desktop\TwsDde.xls";

            oXL = new Microsoft.Office.Interop.Excel.Application();

            oXL.Visible = true;

            oXL.DisplayAlerts = false;

            mWorkBook = oXL.Workbooks.Open(path,2, false, 5, "", "", true,Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true,false, false);

            //Get all the sheets in the workbook

            mWorkSheets = mWorkBook.Worksheets;

            //Get the allready exists sheet

            mWSheet1=(Microsoft.Office.Interop.Excel.Worksheet)mWorkSheets.get_Item("Basic Orders");

            // Microsoft.Office.Interop.Excel.Range range= mWSheet1.UsedRange;

            mWSheet1.Cells[12, 1] = "GE";
            mWSheet1.Cells[12, 2] = "STK";
            mWSheet1.Cells[12, 7] = "SMART";
            mWSheet1.Cells[12, 9] = "USD";
            mWSheet1.Cells[12, 12] = "Buy";
            mWSheet1.Cells[12, 13] = "100";
            mWSheet1.Cells[12, 14] = "MKT";

            Excel.Range range;
            Excel.Range row;

            range = mWSheet1.get_Range("A12", "O12");
            range.EntireRow.Select();

            oXL.Run("TwsDde.xls!Sheet2.placeOrder");
        }

Любая помощь будет принята с благодарностью. Или альтернативные способы сделать то же самое, то есть запустить форму Windows, которая может содержать этот код?

Ответы на вопрос(3)

Ваш ответ на вопрос