Wie zum ausführen von excel-vba-code von einem Windows-Dienst

Ich möchte einige excel-vba-code von meinem Windows-Dienst. Der Service ist mit einem fileSystemWatcher überwachen Sie ein Verzeichnis für die xml-Datei Hinzugefügt werden. Sobald eine Datei Hinzugefügt wird, der Inhalt der xml-Datei deserialisiert wird in den Objekt Eigenschaften. In dieser Phase will ich öffnen einer excel-Datei und übergeben Sie diese Werte in bestimmten Zellen und die Ausführung von vba-code aus, dass die Arbeit Buch. Ich habe diese arbeiten perfekt in einer windows forms-Anwendung aber ich kann ihn von meinem Windows-Dienst-Anwendung. Ich legte einen debugger an die Anwendung, um zu versuchen und sehen, was passiert war, aber es wurden keine Fehler geworfen und alle Schritte erfolgreich abgeschlossen. Ich kenne einen Windows-Dienst unterstützt nicht das öffnen von MS Office-Dateien gibt es Probleme mit der Interaktion mit der Benutzeroberfläche und der Benutzer Berechtigungen hat. Aber ich bin auf der Suche nach einer Arbeit um jeden Weg, um in der Lage sein, diese zu bekommen vba-code, die von einem service. Ich bin mit Windows 7 Home Premium 32 bit und ich habe meine Rechnung für meinen service set LocalSystem.Dies ist der code, den ich verwende:

    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");
        }

Jegliche Hilfe würde sehr geschätzt werden. Oder alternative Wege, die gleiche Sache zu tun ich.e läuft ein windows form, die diesen code enthält vielleicht?

InformationsquelleAutor user1948787 | 2013-02-24
Schreibe einen Kommentar