从Interop (c#)应用程序在Excel中运行的Excel宏在完成执行之前返回
本文关键字:Excel 执行 返回 Interop 应用程序 运行 | 更新日期: 2023-09-27 18:18:40
我的宏子('first-sub')通过从Application调用另一个子('second-sub')结束。OnTime,等待时间为5秒。然而,我的c#应用程序在"first-sub"执行完成后重新获得控制权。它不会等待"第二潜艇"完成。有没有一种方法,我的c#应用程序可以等待,直到两个宏完成他们的运行?
c#:xlApp.Run("first-sub");
宏:
Sub first-sub
'Some code lines'
Application.OnTime(Now + "00:00:05"), "second-sub"
End Sub
Sub second-sub
'Some code lines'
End Sub
我尝试使用线程。睡觉,不管用。此外,我尝试创建一个单独的宏,运行调用first-sub并等待5秒。
我正在使用一个加载项(彭博加载项),仅在"第一子"结束后计算结果。这个插件不会在潜艇中间计算结果。所以,一旦潜艇的控制出来,在大约5秒内,我的结果就会被填充。然后,我需要执行'second-sub'。这就是为什么,我必须使用Application。打开时间而不是Application.Wait.
所以,下面的代码不起作用
xlApp.Run("first-sub");
xlApp.OnTime((DateTime.Now + TimeSpan.FromSeconds(5)).ToString(), "second-sub");
它确实运行了第二个子标题,但bloomberg的结果没有填充。
这是许多可能的解决方案之一:
Sub first-sub
'Some code lines'
Application.Wait "00:00:05"
second-sub
End Sub
这样,您等待5秒,然后同步执行second-sub,并且first-sub在second-sub执行后结束。
另一个解决方案是分别执行两个sub:
xlApp.Run("first-sub");
Application.Wait "00:00:05"
xlApp.Run("second-sub");