VB – Visual Studio 2010中的自动化Excel – select已更改的问题

我目前正在编写一个实用程序,它从Excel文档中获取两组不同的数据并将其发送到两个不同的Web服务。 每组数据都有自己的button,将数据发送到Web服务。 当单击abutton时,相应的Web服务将根据input值返回数据。

我所要做的是让这个工具可以被各种各样的人所使用。 他们将要做的是将他们自己的Excel文档中的特定单元格与我实用程序中的相应单元格同步。 使用简单的Excel公式。 例如:

c:\temp\[book1.xls]sheet1'!a1 

现在我想要做的是自动“点击”button,或更新,当用户将他们的单元格连接到我的实用程序相应的单元格上的工具。

我已经尝试了我的页面上的select更改事件。 但是,直到我的实用程序处于活动状态或点击状态,它才会真正处理。

有没有办法让我的工具自动更新? 如果不知何故,当我的公用事业被closures时,这将是特别真棒。 所以当用户打开它时,它已经充满了他们的信息,输出是正确的。

要求:
你需要保证,当用户使用Excel时,你的应用程序可以收集数据。 您的应用程序可能当时没有运行。 您需要Worksheet_SelectionChange()事件不仅在您的应用程序处于活动状态时自动触发。

解:
基本上,为了保证Worksheet_SelectionChange()始终在运行,并且为了保证每当用户打开一个excel实例时,您都能够收集和处理input到您需要的特定目标范围地址中的数据/公式连接VB.NET Excel COM Addin中的selectionchange事件。 有几种方法可以做到这一点,但是从使用VB.NET开始,使用构buildVSTO COM Addin的最新方法是最好的select。
关于如何最好地构build一个VSTO外挂程序还有很多其他的问题(在VB.NET中有些是用C#编写的,但是所有这些信息对于两者来说都是一样的,只是语法不同而已)。
所以你需要两个项目。 你现有的,加上一个Excel VSTO插件(你也可以在VB.NET中做)。

现在在selectionchange事件中,您应该确保您的代码正确处理目标范围; 即。 请确保您检查非选拔的范围组合… A1:B1; D2:E2并将数据复制到您的应用程序。 您可以考虑使用xml等格式来从Excel中序列化最新数据,以便如果您的应用程序当时未打开,则可以反序列化并读取下次打开时为其存储的数据。 我想这实际上取决于你如何处理数据(也就是将数据加载到数据网格中)以及是否要进一步处理并将其存储在其他地方(在这种情况下,也许可以将其直接放入数据库在Excel中的插件)。