c# - 从 c# Winform 运行 20 分钟的 Excel 宏

标签 c# winforms excel

我们有一个大约需要 20 分钟才能完成的宏。 我们有一个我们的用户可以访问的 c# winform - 它包含一个“运行宏”按钮。 我希望这样用户可以点击按钮然后实际关闭表单,然后在 20 分钟内在预定义目录中查看宏的输出。

这仅仅是创建委托(delegate)并让委托(delegate)运行宏的情况,还是以上不是一件小事?

一些可能可行的想法:

  • 在用户按下按钮后隐藏表单?缺点是该宏仍会在 Excel 实例中占用用户的 CPU?
  • UserX 电脑上的 winForm 能否以某种方式启动一个程序在我们的“Excel”服务器上运行?这听起来有些牵强,但也许有人可以提供帮助。
  • 与上述类似,也许在 Excel 服务器上,我可以创建一个小型守护程序控制台应用程序,计划每 2 秒运行一次,并检查共享数据库上的表以查看是否需要运行任何宏。用户的 winform 可以更新此控制表,然后守护程序开始工作。

最佳答案

是的,很简单。

使用 C# 启动 VBS 文件。代码将类似于

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

以上代码将启动 VBScript,没有提示或错误,也没有 shell Logo 。

下一步是创建一个 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

关于c# - 从 c# Winform 运行 20 分钟的 Excel 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10965369/

相关文章:

vb.net - 如何卸载 VB.NET 中所有打开的表单?

c# - 在 C# 中动态创建和释放控件

python - 更新zip存档时文件重复

vba - 如何在 SolidWorks VBA 中引用相对路径

c++ - Excel 文件和 C++

c# - Uri.EscapeUriString - 如何使用它?

c# - XNA - Farseer 物理 3.5 - 碰撞检测问题 - 无/零重力 - 太空游戏

C#:检查类型 T 是否为 bool

c# - 在 asp.net 中增加复选框的大小?

c# - 刷新组合框项目,最简单的方法