我想从我的 Windows 服务运行一些 excel vba 代码。该服务正在使用 fileSystemWatcher 来监视要添加的 xml 文件的目录。添加文件后,xml 文件的内容将反序列化为对象属性。在这个阶段,我想打开一个 excel 文件并将这些值传递给某些单元格并运行该工作簿中的 vba 代码。我在 Windows 窗体应用程序中完美地运行了这个,但我无法从我的 Windows 服务应用程序中得到它。我将调试器附加到应用程序以尝试查看发生了什么,但没有抛出错误并且所有步骤都成功完成。我知道 Windows 服务不支持打开 MS Office 文件,因为与 UI 交互和它拥有的用户权限存在问题。但是我正在寻找一种能够从服务中运行此 vba 代码的方法。我使用的是 Windows 7 Home Premium 32 位,并且我的服务帐户设置为 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, …Run Code Online (Sandbox Code Playgroud)