20分钟Excelmacros从C#Winform运行

我们有一个macros需要大约20分钟才能完成。 我们已经获得了我们的用户可以访问的ac#winform – 它包含一个“运行macros”button。 我喜欢它,以便用户可以按下button,然后实际closures窗体,然后在20分钟内在预定义的目录中查看macros的输出。

这只是一个创build一个委托,让委托运行macros或上述不是一件小事的情况?

几个想法可能是可行的:

  • 用户按下button后隐藏表单? 缺点是macros将仍然在Excel的实例内绑定用户的CPU?
  • UserX的电脑上的winForm可以启动一个程序在我们的“Excel”服务器上运行吗? 这听起来很遥远,但也许有人可以帮助。
  • 类似于上面可能在Excel服务器上,我可以创build一个小的守护进程控制台应用程序,计划每2秒运行一次,并检查共享数据库上的表,看看是否有任何macros需要运行。 用户的winform可以更新这个控制表,然后守护进程开始工作。

是的,这很简单。

使用C#启动VBS文件。 代码会是这样的

 System.Diagnostics.Process.Start(@"cscript //B //Nologo c:\MyScript.vbs"); 

上面的代码将启动VBScript,没有任何提示或错误,没有shell徽标。

下一步是创build一个vbs文件。

打开记事本并粘贴此代码并将其另存为MyScript.vbs文件

 Dim xlApp, xlBook Set xlApp = CreateObject("Excel.Application") '~~> Change Path here Set xlBook = xlApp.Workbooks.Open("C:\Test.xls", 0, True) xlApp.Run "TestMacro" xlBook.Close xlApp.Quit Set xlBook = Nothing Set xlApp = Nothing